我正在尝试编译一些代码。这是我得到的错误:
error while loading shared libraries: libcudart.so.4: cannot open shared object file
现在我已经包含了/usr/local/cuda/include
并链接到/usr/local/cuda/lib
并在编译提示符下传递了-lcudart标志。
但我仍然遇到这个运行时错误!
我刚刚开始使用Eclipse,这真的很烦人。
非常感谢任何见解。
提前致谢,
答案 0 :(得分:4)
当旧代码更改文件夹结构时,通常会发生这种情况。找到旧代码中预期文件的位置,然后将sym链接到实际位置。
还尝试以root身份启动eclipse。或者跑步:
ldconfig /usr/local/cuda/lib
答案 1 :(得分:3)
默认情况下,运行时链接程序不会在/ usr / local / cuda / lib中看到内容。你需要明确告诉它看那里。有几种方法:
LD_LIBRARY_PATH
环境变量以包含/usr/local/cuda/lib
。ldconfig /usr/local/cuda/lib
。-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)指向右边,还有一个有效的共享对象吗?你有该文件的读权限吗?
现在,您说在尝试编译代码时这是一个运行时错误。你的意思是你可以编译,然后当你运行错误发生时,或者当你尝试运行编译器时发生错误(链接器错误)?