2011-12-29 100 views
2

你能帮我弄清楚这里缺少什么吗?
我想编译一个使用OTL 4库的C++程序,但是出现错误。无法使用OTLv4库编译C++代码

环境细节:

  • 我的Ubuntu 11.04 VM安装Oracle数据库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

我能图它今天下午出来了,我现在编译它。
所以,如果有人用同样的问题绊倒像我一样,这里的解决方案:

添加$ORACLE_HOME/lib路径您$LD_LIBRARY_PATH

为了方便,你还可以添加到您的.bashrc的个人资料,像这样:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin 
export LD_LIBRARY_PATH 

就是这样!

PS:
我试图张贴此较早,但它似乎是我仍然缺乏代表处点
为了回答我的问题早于8小时。

0

不知道为什么这是必要的,但你可以尝试只为你的命令添加-lnnz10

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