ホームページ  >  記事  >  バックエンド開発  >  Go CGO 実行可能ファイルを Linux 上の Oracle ライブラリに静的にリンクするにはどうすればよいですか?

Go CGO 実行可能ファイルを Linux 上の Oracle ライブラリに静的にリンクするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-25 10:50:11264ブラウズ

How to Statically Link a Go CGO Executable with Oracle Libraries on Linux?

Linux 上の Oracle ライブラリを使用した Go CGO 実行可能ファイルの静的実行のためのリンク

問題点:

基本的な Go の構築Oracle データベースとインターフェースするスニペットは、 command:

CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static"  ${MAIN_SRC}

コンパイル エラーは、Oracle ライブラリ -lclntsh が見つからないことを示しています。環境変数を設定し、Oracle データベース パッケージから追加ファイルをインストールしようとしても、静的コンパイルは失敗します。

解決策:

  1. 静的ライブラリを生成します:

    通常、Oracle には静的ライブラリが付属していません。 libclntst.a.これを生成するには、次のコマンドを実行します:

    $ORACLE_HOME/bin/genclntst
  2. アプリケーションをリンクします:

    生成された静的ライブラリにアプリケーションをリンクします:

    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}
  3. ハンドルがありませんシンボル (オプション):

    まだ欠落しているシンボルがある場合は、nm ツールを使用してそれらを特定します。次に、依存関係を解決するために必要に応じて追加の静的ライブラリを追加します。

追加メモ:

  • Oracle のリンカー ユーティリティを使用すると、依存関係の分析に役立ちます。
  • Oracle のバージョンとコンパイラによっては、とリンクする必要がある場合があります。追加の ICC ランタイム静的ライブラリ。
  • 静的リンクでは、すべての依存関係を手動で解決する必要があり、複雑になる可能性があります。

以上がGo CGO 実行可能ファイルを Linux 上の Oracle ライブラリに静的にリンクするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。