C ++:奇怪的共享库错误 - eclipse

时间:2011-07-14 16:04:58

标签: c++ eclipse cuda

我正在尝试编译一些代码。这是我得到的错误:

error while loading shared libraries: libcudart.so.4: cannot open shared object file

现在我已经包含了/usr/local/cuda/include并链接到/usr/local/cuda/lib并在编译提示符下传递了-lcudart标志。

但我仍然遇到这个运行时错误!

我刚刚开始使用Eclipse,这真的很烦人。

非常感谢任何见解。

提前致谢,

4 个答案:

答案 0 :(得分:4)

当旧代码更改文件夹结构时,通常会发生这种情况。找到旧代码中预期文件的位置,然后将sym链接到实际位置。

还尝试以root身份启动eclipse。或者跑步:

ldconfig /usr/local/cuda/lib

答案 1 :(得分:3)

默认情况下,运行时链接程序不会在/ usr / local / cuda / lib中看到内容。你需要明确告诉它看那里。有几种方法:

  1. 设置LD_LIBRARY_PATH环境变量以包含/usr/local/cuda/lib
  2. 以root身份运行ldconfig /usr/local/cuda/lib
  3. -rpath=/usr/local/cuda/lib添加到您的链接器参数(-Wl,-rpath=/usr/local/cuda/lib,如果与g++链接)。

答案 2 :(得分:2)

我有完全相同的错误。我在Ubuntu 10.04下使用eclipse Juno和Cuda。问题是虽然我已经将链接器路径配置为指向/usr/local/cuda/lib64(在~/.bashrc等),但是eclipse仍然无法找到它。我可以从终端运行已编译的(通过eclipse)项目,但在尝试Run后无法在eclipse的终端中链接。

我的解决方案是在LD_LIBRARY_PATH

中添加值为/usr/local/cuda/lib64的变量File->Properties->Run/Debug Settings->Edit (Selected project)->Environment Tab

我不知道是否有更持久的解决方案,但它对我有用。 我还应该提一下,我已经在构建环境中添加了一些额外的变量(属性窗口中的C/C++ Build->Environment),因为我无法以相同的原因构建项目。

唯一奇怪的是,起初它可以毫无问题地运行,然后当我重新打开eclipse时,出现这个错误而我没有改变任何东西。

答案 3 :(得分:0)

文件是否存在,并且在正确的目录中具有预期的名称?符号链接(我假设你有一个指向版本化的.so)指向右边,还有一个有效的共享对象吗?你有该文件的读权限吗?

现在,您说在尝试编译代码时这是一个运行时错误。你的意思是你可以编译,然后当你运行错误发生时,或者当你尝试运行编译器时发生错误(链接器错误)?