問題点:
基本的な Go の構築Oracle データベースとインターフェースするスニペットは、 command:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static" ${MAIN_SRC}
コンパイル エラーは、Oracle ライブラリ -lclntsh が見つからないことを示しています。環境変数を設定し、Oracle データベース パッケージから追加ファイルをインストールしようとしても、静的コンパイルは失敗します。
解決策:
静的ライブラリを生成します:
通常、Oracle には静的ライブラリが付属していません。 libclntst.a.これを生成するには、次のコマンドを実行します:
$ORACLE_HOME/bin/genclntst
アプリケーションをリンクします:
生成された静的ライブラリにアプリケーションをリンクします:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntsh -lclntst" ${MAIN_SRC}
ハンドルがありませんシンボル (オプション):
まだ欠落しているシンボルがある場合は、nm ツールを使用してそれらを特定します。次に、依存関係を解決するために必要に応じて追加の静的ライブラリを追加します。
追加メモ:
以上がGo CGO 実行可能ファイルを Linux 上の Oracle ライブラリに静的にリンクするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。