- Utilisez l'outil $ORACLE_HOME/bin/relink pour générer la bibliothèque nommée
libclntst.a
Lest
signifie bibliothèque statique. Le client Oracle n'est généralement pas livré avec ce fichier. Le - Essayez d'associer votre application à cette bibliothèque. Vous trouverez très probablement de nombreux symboles manquants.
- Utilisez l'outil nm pour trouver la source de ces symboles manquants.
-
Dans le cas de 11gR2, cette commande a fonctionné pour moi :
/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
La liaison statique nécessite que vous résolviez toutes les dépendances manuellement. Dans cet exemple, libclntst11.a dépend des symboles de libippdcmerged.a et libippsmerged.a.
Sur l'ancienne version d'Oracle, toute la base de données a été créée et liée à l'aide du compilateur ICC d'Intel. Ainsi, lors de la liaison statique de la bibliothèque client d'Oracle, vous deviez également ajouter des bibliothèques statiques à partir de l'environnement d'exécution d'ICC.