即使它们存在于LD_LIBRARY_PATH中,ld也找不到OCCI库

时间:2016-08-18 10:37:01

标签: environment-variables ld occi

我只是在做一些简单的OCCI事情,但它编译有点奇怪

环境:

  • Oracle VM:Windows 8 64位上的Centos7 64位
  • gcc-c ++。x86_64
  • 双击rpm简单安装Oracle XE(下载页面说明 linux 64bit)

echo $ LD_LIBRARY_PATH产生: |---------------------------------------| | URL: google.com | |---------------------------------------| | | | VIEW THAT RENDERS WEBPAGE | | OF GOOGLE.COM | | | |---------------------------------------|

我也试过/usr/local/lib64/:/u01/app/oracle/product/11.2.0/xe/lib/ 这样它就会产生 export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib/

一些列表命令: /u01/app/oracle/product/11.2.0/xe/lib/

产生以下结果:

find /u01/app/oracle/product/11.2.0/xe/lib/ -name lib*

然而编译命令说ld找不到一些库: /u01/app/oracle/product/11.2.0/xe/lib/ /u01/app/oracle/product/11.2.0/xe/lib/libagtsh.so.1.0 /u01/app/oracle/product/11.2.0/xe/lib/libcell11.so /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1 /u01/app/oracle/product/11.2.0/xe/lib/libnnz11.so /u01/app/oracle/product/11.2.0/xe/lib/libocci.so.11.1 /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so /u01/app/oracle/product/11.2.0/xe/lib/libocci.so /u01/app/oracle/product/11.2.0/xe/lib/libagtsh.so and some others....

g++ -o ab -I/u01/app/oracle/product/11.2.0/xe/rdbms/public/ -lnnz11 -lclntsh -locci a.cpp

我尝试添加/usr/bin/ld: cannot find -lnnz11 /usr/bin/ld: cannot find -lclntsh /usr/bin/ld: cannot find -locci collect2: error: ld returned 1 exit status ,它成功编译但是运行程序会导致它在简单的行中无声地崩溃/阻塞

-L/u01/app/oracle/product/11.2.0/xe/lib/

没有例外。

有人知道我做错了吗?或者这两个问题有关系吗?

顺便说一句,5个小时前它用来工作,当它突然停止工作时我重新安装了整个虚拟机,现在它仍然无效。

1 个答案:

答案 0 :(得分:0)

  

然而编译命令说ld找不到一些库:g++ -o ab -I/u01/app/oracle/product/11.2.0/xe/rdbms/public/ -lnnz11 -lclntsh -locci a.cpp

您的命令不正确(并且链接器是正确的抱怨)。您需要告诉链接器在哪里找到库,并使用-L标志:

执行此操作
ORACLE=/u01/app/oracle/product/11.2.0/xe
g++ -I ${ORACLE}/rdbms/public -L ${ORACLE}/lib a.cpp -lnnz11 -lclntsh -locci

(请注意,您在库之后的源位置也不正确,我在上面修复了它。在链接命令行matters上放置库和源。)