2016-08-18 18 views
0

我只是做了一些簡單的OCCI的事情存在,但它編譯一個有點奇怪LD找不到OCCI庫,即使他們在LD_LIBRARY_PATH

環境:

  • 的Oracle VM:Centos7 64位的Windows 8 64位
  • GCC-C++。x86_64的
  • 只需通過雙擊RPM安裝了Oracle XE(下載頁面上說 的Linux 64位)

回聲$ LD_LIBRARY_PATH產量: /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*

產生以下:

/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.... 

然而編譯命令說,LD無法找到一些圖書館: 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/,它編譯成功但運行程序會造成它靜靜地崩潰/塊在簡單的線條

Environment *env = Environment::createEnvironment();

沒有發現任何異常。

有人知道我做錯了嗎?還是兩個問題有關?

順便說一句,它用於工作像5小時前,當它突然停止工作,我重新安裝整個虛擬機,現在它仍然無法正常工作。

回答

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。)