我只是在做一些简单的OCCI事情,但它编译有点奇怪
环境:
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个小时前它用来工作,当它突然停止工作时我重新安装了整个虚拟机,现在它仍然无效。
答案 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上放置库和源。)