sql >> データベース >  >> RDS >> Oracle

Linux/UbuntuでOracleライブラリを使用して静的CGO実行可能ファイルをビルドしようとしています

    • $ ORACLE_HOME / bin / relinkツールを使用して、libclntst.aという名前のライブラリを生成します。 st 静的ライブラリの略です。 Oracleクライアントは通常、このファイルに同梱されていません。
    • アプリをこのライブラリにリンクしてみてください。おそらく多くのシンボルが欠落していることに気付くでしょう。
    • nmツールを使用して、欠落しているシンボルのソースを見つけます。
    • 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のシンボルに依存しています。

    古いバージョンのOracleでは、データベース全体がIntelのICCコンパイラを使用して構築およびリンクされていました。したがって、Oracleのクライアントライブラリを静的にリンクする場合は、ICCのランタイムからいくつかの静的ライブラリも追加する必要がありました。




    1. 奇妙な断続的なSQL接続エラー、再起動時の修正、3〜5日後に戻ってきます(ASP.NET)

    2. SQL Serverのキーと値のペア(EAV形式)のリストにJSONを読み込みます

    3. Djangoは、一括挿入/更新/削除時のデータベーストリガーの動作をエミュレートします

    4. データベース接続文字列と照合