无法使用OTLv4库编译C ++代码

时间:2011-12-29 07:35:01

标签: oracle otl

你能帮我弄清楚这里缺少什么吗? 我尝试使用OTL 4库编译c ++程序,但是我收到了错误。

环境详情:

  • 我在Ubuntu 11.04 VM上安装了Oracle DB XE 10G。
  • 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目录时存在。

2 个答案:

答案 0 :(得分:2)

我今天下午能够弄明白,现在我就把它编译好了 所以万一有人遇到与我在这里遇到的问题相同的问题:

$ORACLE_HOME/lib路径添加到$LD_LIBRARY_PATH

为方便起见,您也可以将其添加到.bashrc个人资料中,如下所示:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH  

就是这样!

PS:
我试图提前发布,但似乎我仍缺乏代表点
为了在8小时之内回答我自己的问题。

答案 1 :(得分:0)

不确定为什么有必要,但您可以尝试将-lnnz10添加到您的命令中。

(谷歌显示人们使用这个额外的论点,但无法快速看到任何人解释原因;其他选项似乎是设置LD_LIBRARY路径或将$ORACLE_HOME/lib添加到/etc/ld.so.conf .. 。)