Linux/Ubuntu 上の Oracle ライブラリを使用して静的 CGO 実行可能ファイルをビルドしようとしています: 予期しないエラー
問題:
Linux/Ubuntu 上の CGO および Oracle ライブラリに静的にリンクされた実行可能ファイルの結果は次のとおりです。ビルド プロセス中のエラー、具体的には Oracle ライブラリ -lclntsh の検出に失敗しました。
解決策:
-
静的ライブラリ (libclntst. a):
a.まだ完了していない場合は、完全な Oracle データベース パッケージをインストールします。
b. $ORACLE_HOME/bin/genclntst を実行して、欠落している静的ライブラリ libclntst12.a を生成します。
-
生成されたライブラリとのリンク:
a。生成されたライブラリ libclntst12.a.
b を含めるようにビルド コマンドを変更します。例: go build -work -x -ldflags " -v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntst12" ${MAIN_SRC}
-
欠落しているシンボル (存在する場合) の処理:
a. ldd を使用して、静的にリンクされた実行可能ファイル内の未解決のシンボルをチェックします。
b. nm を使用して、Oracle ライブラリ内で欠落しているシンボルのソースを見つけます。
c.追加のライブラリとリンクして、欠落しているシンボルを解決します。
-
追加メモ:
a.静的リンクでは、すべての依存関係を手動で解決する必要があります。
b.古い Oracle バージョンの場合、ICC ランタイムからの追加の静的ライブラリが必要になる場合があります。
以上がLinux/Ubuntu 上の Oracle ライブラリを使用して静的 CGO 実行可能ファイルを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。