libclntst.a
नामक लाइब्रेरी बनाने के लिए $ORACLE_HOME/bin/relink टूल का उपयोग करेंst
स्थिर पुस्तकालय के लिए खड़ा है। Oracle क्लाइंट को आमतौर पर इस फ़ाइल के साथ शिप नहीं किया जाता है।- अपने ऐप को इस लाइब्रेरी से लिंक करने का प्रयास करें। आप शायद बहुत से प्रतीकों को गायब पाएंगे।
- उन प्रतीकों के स्रोत को खोजने के लिए एनएम टूल का उपयोग करें।
-
11gR2 के मामले में इस कमांड ने मेरे लिए काम किया:
/usr/bin/c++ -Wall -ggdb3 -fPIC \ CMakeFiles/opassgen.dir/opassgen.cpp.o \ CMakeFiles/opassgen.dir/dbutils.cpp.o \ CMakeFiles/opassgen.dir/common.cpp.o \ CMakeFiles/opassgen.dir/crypto.cpp.o \ n.o -o opassgen \ -rdynamic -static-libgcc -L. -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic \ /home/oracle/ivan/openssl-1.0.1t/libcrypto.a \ /oracle/u01/db/11.2.0.4/lib/libclntst11.a \ /oracle/u01/db/11.2.0.4/lib/libippdcmerged.a \ /oracle/u01/db/11.2.0.4/lib/libippsmerged.a \ -Wl,--whole-archive libtrotl.a -Wl,--no-whole-archive \ -lpthread -ldl
स्टेटिक लिंकिंग की आवश्यकता है, कि आप सभी निर्भरताओं को मैन्युअल रूप से हल करें। इस उदाहरण में libclntst11.a libippdcmerged.a और libippsmerged.a के प्रतीकों पर निर्भर करता है।
पुराने Oracle संस्करण पर पूरे डेटाबेस को Intel के ICC कंपाइलर का उपयोग करके बनाया और जोड़ा गया था। इसलिए Oracle के क्लाइंट लिब को स्टेटिकली लिंक करते समय आपको ICC के रनटाइम से कुछ स्टैटिक लिब भी जोड़ने पड़े।