解決CGO 可執行文件的靜態Oracle 庫問題
問題概述:
編譯時啟用CGO 和Oracle 庫的Go 應用程序,靜態連結期間出現錯誤。具體來說,GCC 連結器找不到所需的 Oracle 庫 libclntsh。儘管在編譯時指定了庫路徑,問題仍然存在。
解決方案:
依照以下步驟解決問題:
範例:
對於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。
以上是如何解決 CGO 應用程式中 Oracle 庫的靜態連結錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!