你能帮我弄清楚这里缺少什么吗? 我尝试使用OTL 4库编译c ++程序,但是我收到了错误。
环境详情:
编译代码是:
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
目录时存在。
答案 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
.. 。)