Résolution du problème de bibliothèque Oracle statique pour l'exécutable CGO
Présentation du problème :
Lors de la compilation d'un Allez dans l'application avec CGO activé et les bibliothèques Oracle, des erreurs se produisent lors du lien statique. Plus précisément, l'éditeur de liens GCC ne trouve pas la bibliothèque Oracle requise, libclntsh. Malgré la spécification du chemin de la bibliothèque lors de la compilation, le problème persiste.
Solution :
Suivez ces étapes pour résoudre le problème :
Exemple :
Pour 11gR2, la commande suivante résout le problème :
/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
N'oubliez pas que la résolution manuelle des dépendances est nécessaire lors d'une liaison statique. Dans cet exemple, libclntst11.a dépend de libippdcmerged.a et libippsmerged.a.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!