Behebung eines statischen Oracle-Bibliotheksproblems für die ausführbare CGO-Datei
Problemübersicht:
Beim Kompilieren eines Bei einer Go-Anwendung mit aktiviertem CGO und Oracle-Bibliotheken treten beim statischen Link Fehler auf. Insbesondere kann der GCC-Linker die erforderliche Oracle-Bibliothek libclntsh nicht finden. Obwohl beim Kompilieren der Bibliothekspfad angegeben wurde, besteht das Problem weiterhin.
Lösung:
Folgen Sie diesen Schritten, um das Problem zu beheben:
Beispiel:
Für 11gR2 löst der folgende Befehl das Problem erfolgreich:
/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
Denken Sie daran, dass beim statischen Verknüpfen Abhängigkeiten manuell aufgelöst werden müssen. In diesem Beispiel hängt libclntst11.a von libippdcmerged.a und libippsmerged.a ab.
Das obige ist der detaillierte Inhalt vonWie können statische Verknüpfungsfehler mit Oracle-Bibliotheken in CGO-Anwendungen behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!