2

ここで何が足りないのかを理解するのを手伝ってもらえますか?
OTL4ライブラリを使用してc++プログラムをコンパイルしようとしていますが、エラーが発生します。

環境の詳細:

  • Oracle DBXE10GをUbuntu11.04VMにインストールしました。
  • SQL * Plusとサーバー自体は、正常に実行されています。

コンパイルコードは次のとおりです。

g++ -o <output>.exe <source>.cpp -I$ORACLE_HOME/rdbms/public -I$ORACLE_HOME/rdbms/demo -L$ORACLE_HOME/lib -lclntsh

エラーは次のとおりです。

/usr/bin/ld: warning: libnnz10.so, needed by /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so, not found (try using -rpath or -rpath-link)  
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nztSetAppDefaultLocation'  
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzos_DisableClientAuthentication'  
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzos_Create_Ctx'  
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `_intel_fast_memcpy'  
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzgbllsm_location_shared_memory'  
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `__intel_cpu_indicator'  
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzosSCCS_SetCRLCacheSize'  
...a whole lot more undefined references...   
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzssGSL_GetSecretLength'  
collect2: ld returned 1 exit status  

エラーに関する注意:
チェックしたところ、ディレクトリ libnnz10.soを調べたときに存在していました。$ORACLE_HOME/lib

4

2 に答える 2

2

今日の午後にそれを理解することができ、今コンパイルすることができました。
したがって、誰かが私と同じ問題に遭遇した場合の解決策は次のとおりです。

$ORACLE_HOME/libにパスを追加します$LD_LIBRARY_PATH

便宜上、.bashrc次のようにこれをプロファイル に追加することもできます。

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH  

それでおしまい!

PS:これをもっと早く投稿しようとしましたが、8 時間以内に自分の質問に答えるには、
まだ担当者ポイントが不足しているようです。

于 2011-12-29T16:51:36.570 に答える
0

なぜ必要なのかはわかりませんが-lnnz10、コマンドに追加するだけで試すことができます。

(Google は、その余分な引数を使用している人々を示していますが、その理由を説明する人をすぐに見ることができませんでした。他のオプションは、LD_LIBRARYパスを設定するか、... に追加すること$ORACLE_HOME/libのよう/etc/ld.so.confです)

于 2011-12-29T11:38:29.113 に答える