我是Linux的新用户,我正在尝试在我的机器上安装systemc-2.3.0
库(Fedora 16)。我已经非常仔细地遵循了每个指令,在库的INSTALL文件中提到但是当我尝试使用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专家。
谢谢。
答案 0 :(得分:4)
这是动态链接的环境设置问题,因为共享库安装在系统默认库目录之外。执行二进制文件时,加载程序无法找到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
答案 1 :(得分:0)
是的! 事实上,对于报告的所有此类错误,缺少的是用户没有或忘记设置LD_LIBRARY_PATH
答案 2 :(得分:0)
你可以在eclipse中设置链接器设置 - &gt;杂项 - &gt; -Wl,-rpath,your_lib_path 强>
答案 3 :(得分:0)
我在~/.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/
的顶级目录中添加两个软链接(即lib-linux -> lib-linux
和systemc-2.3.0
)(如您所安装的那样)(例如,我的路径是/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-&gt; linux支持32位操作系统。