加载共享库时出错:libsystemc-2.3.0.so

时间:2012-09-13 14:43:15

标签: c++ eclipse systemc

我是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专家。

谢谢。

4 个答案:

答案 0 :(得分:4)

这是动态链接的环境设置问题,因为共享库安装在系统默认库目录之外。执行二进制文件时,加载程序无法找到libsystemc-2.3.0.so。

两种解决方案。

  1. 设置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

  2. 在链接二进制文件时将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-linuxsystemc-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位操作系统。