2

我是 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

5 回答 5

6

这是动态链接的环境设置问题,因为共享库安装在系统默认库目录之外。执行二进制文件时,加载程序找不到 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

于 2012-10-31T09:27:27.063 回答
1

我在末尾附加两行~/.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->linux 支持 32 位操作系统。

于 2015-10-21T02:17:00.613 回答
0

是的!事实上,对于报告的所有此类错误,缺少的是用户没有或忘记设置 LD_LIBRARY_PATH

于 2013-07-24T17:45:27.197 回答
0

您可以在 Eclipse链接器设置-> 杂项 -> -Wl,-rpath,your_lib_path 中设置

于 2015-08-08T04:11:06.137 回答
0

尝试通过访问 libsystemc-2.3.1.so 所在的目录将 libsystemc-2.3.0.so 移动到默认库目录,打开终端并运行: sudo cp libsystemc-2.3.0.so /lib 这在我的情况下效果很好

于 2021-12-22T08:31:10.620 回答