2011-03-18 99 views
7

我有一個項目組織爲錯誤而載入共享庫

\bin\cmain 
\lib\libxmlrpc_client++.a 
\lib\libxmlrpc_client++.so.4 
\lib\libxmlrpc_client++.so.4.16 

我的C程序cmain需要動態鏈接clib.so.4。在編譯代碼時,我使用-L.../lib來指示目錄lib並使用-lxmlrpc_client++。但是,我的代碼在加載共享庫時出現錯誤:

libxmlrpc_client++.so.4: cannot open shared object file: No such file or directory 

任何想法來解決這個問題?

PS:問題解決了,很有參考價值的問題:http://gcc.gnu.org/ml/gcc-help/2005-12/msg00017.html

回答

8

您需要告訴動態鏈接器在何處查找庫。

export LD_LIBRARY_PATH=/path/to/lib 
./run-my-program 

或通過在編譯時設定運行時鏈接路徑:

假設這是某種Unix/Linux系統的,這既可以通過執行程序之前設置LD_LIBRARY_PATH環境變量來實現
gcc -L/path/to/lib -Wl,-rpath,/path/to/lib -lxmlrpc_client++ ... 
./run-my-program 

這兩種方法都有問題。谷歌爲「爲什麼LD_LIBRARY_PATH壞」。用於設置運行時鏈接程序路徑的命令行選項因編譯器而異。

0

您應該使用-Llib,而不是-L.

0

這個軟鏈接是否被破壞? ls -l,確保你指向正確的文件。