[英]Error while loading shared libraries: libsystemc-2.3.0.so
我是 Linux 的新用戶,我正在嘗試在我的機器(Fedora 16)上安裝systemc-2.3.0
庫。 我非常仔細地遵循了庫的安裝文件中提到的每條說明,但是當我嘗試使用 ECLIPSE 運行一個簡單的程序時出現錯誤。 我已在 ECLIPSE 中正確鏈接了所有庫,但仍然出現錯誤。
程序如下:
#include <systemc.h>
using namespace std;
int sc_main(int argc, char * argv[])
{
cout << "hello world" << endl;
for(int i=0; i<argc; i++)
cout << argv[i] << " ";
cout << endl;
return 0;
}
錯誤輸出是:
/home/vivek/workspace/TestSystemC/Debug/TestSystemC:加載共享庫時出錯:libsystemc-2.3.0.so:無法打開共享對象文件:沒有這樣的文件或目錄
任何幫助將不勝感激。 由於我不是 Linux 專家,請以詳細的方式(逐步)解釋您的建議。
謝謝你。
這是動態鏈接的環境設置問題,因為共享庫安裝在系統默認庫目錄之外。 執行二進制文件時,裝入程序無法找到libsystemc-2.3.0.so。
兩種解決方案。
設置您的LD_LIBRARY_PATH。
export LD_LIBRARY_PATH=/usr/local/systemc-2.3.0/lib-linux64:$LD_LIBRARY_PATH
或者,如果您的默認LD_LIBRARY_PATH為空
export LD_LIBRARY_PATH=/usr/local/systemc-2.3.0/lib-linux64
鏈接二進制文件時,將rpath添加到可執行文件。 它會在二進制文件中添加一個條目,並提示加載程序搜索其他路徑。
g++ -o TestSystemC ...your c++ files... -L/usr/local/systemc-2.3.0/lib-linux64 -lsystemc-2.3.0 -Wl,-rpath,/usr/local/systemc-2.3.0/lib-linux64
是的! 實際上,對於報告的所有此類錯誤,缺少的是用戶尚未或忘記設置LD_LIBRARY_PATH
您可以在eclipse 鏈接器中設置->其他-> -Wl,-rpath,your_lib_path
我在~/.profile
的末尾添加了兩行,如下所示:
export SYSTEMC_HOME=/usr/local/systemc-2.3.0/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/systemc-2.3.0/lib-linux64
如果這樣做不起作用,您可以嘗試在lib->lib-linux64/
systemc-2.3.0
的頂級目錄中添加兩個軟鏈接(即lib->lib-linux64/
和lib-linux -> lib-linux
lib->lib-linux64/
lib-linux -> lib-linux
)。例如,我的路徑是/usr/local/systemc-2.3.0/
)。 相應的命令如下
(將當前目錄更改為$ SYSTEMC_HOME目錄):
$ln -s /usr/local/systemc-2.3.0 lib
$ln -s /usr/local/systemc-2.3.0 lib-linux
也許lib-linux64支持64位操作系統,而lib或lib-> linux支持32位操作系統。
嘗試通過訪問 libsystemc-2.3.1.so 所在的目錄將 libsystemc-2.3.0.so 移動到默認庫目錄,打開終端並運行: sudo cp libsystemc-2.3.0.so /lib
這在我的情況
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.