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



你能帮我看看这里少了什么吗?
我试图编译一个c++程序使用OTL 4库,但我得到一个错误。

环境详细信息:

  • 我在Ubuntu 11.04虚拟机上安装了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  

错误说明:
当我查看$ORACLE_HOME/lib目录时,发现libnnz10.so存在。

今天下午我把它弄明白了,现在我把它编译好了。
因此,如果有人遇到和我一样的问题,这里有解决方案:

$ORACLE_HOME/lib路径添加到$LD_LIBRARY_PATH

为方便起见,您也可以将其添加到.bashrc配置文件中,如下所示:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH  

就是这样!

PS:


我想早些时候发布这个,但似乎我仍然缺乏rep点
为了在8小时内回答我自己的问题。

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

(谷歌显示人们使用了这个额外的参数,但不能很快看到有人解释为什么;其他选项似乎是设置LD_LIBRARY路径或将$ORACLE_HOME/lib添加到/etc/ld.so.conf…)

相关内容

  • 没有找到相关文章

最新更新