CGO 実行可能ファイルの静的 Oracle ライブラリの問題の解決
問題の概要:
CGO が有効になっている Go アプリケーションと Oracle ライブラリでは、静的リンク中にエラーが発生します。具体的には、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 中国語 Web サイトの他の関連記事を参照してください。