1

naviserver (nsoracle) 用の oracle ドライバーをコンパイルしようとしています。正常にコンパイルされますが、サーバーを起動すると、nsoracle.so のモジュールのロード中にエラーが発生します。

    Error: modload: /usr/local/ns/bin/nsoracle.so: couldn't load file "/usr/local/ns/bin/nsoracle.so": ld.so.1: nsd: fatal: relocation error: file /usr/local/ns/bin/nsoracle.so: symbol OCIServerDetach: referenced symbol not found

Makefile のライブラリ/リンク行は次のようになります。

    MODLIBS  += -R$(ORACLE_HOME}:${ORACLE_HOME}/lib:$NSHOME/bin:$NSHOME/lib -L$(ORACLE_HOME):$(ORACLE_HOME)/lib:$(NSHOME)/lib -L$(ORACLE_HOME):$(ORACLE_HOME)/lib:$(NSHOME)/lib  -locci -lclntsh -lnnz11

ORACLE_HOME には libocci.so.11.1 libclntsh.11.1 libociei.so libnnz11.so lib が含まれています

4

1 に答える 1

1

オラクルは、SunStudioを使用して、illumos(OmniOSを実行)またはGNU gccディストリビューションに存在しないライブラリを使用して、インスタントクライアントライブラリをコンパイルします。

libCrun.so と libCstd.so は、nsoracle または他のプロジェクトに対して Instantclient (具体的には libocci.so.11.1) を適切にリンクするために必要です。

omn​​ios の pkg install コマンドのようなソースを使用できます

   pkg install sunstudio12.1

また、Sun Studio を取得するためのその他のオプションについては、こちらを確認してください。

私が最終的に使用したgmakeコマンドは、私のために働いた:

   gmake MODLIBS+="-L/opt/sunstudio12.1/lib/amd64 -L$ORACLE_HOME/lib -L/usr/local/ns/lib -R/opt/sunstudio12.1/lib/amd64 -R$ORACLE_HOME/lib  -R/usr/local/ns/lib -lCrun -lCstd -locci -lclntsh -lociei -lnnz11 -lnsthread -lnsdb -lnsd -ltcl8.5" 

32 ビット コンパイルを実行する場合は、/opt/sunstudio12.1/lib/amd64 を /opt/sunstudio12.1/lib に変更します。

于 2016-02-04T00:32:06.603 に答える