找不到图书馆,即使它在搜索路径上
Cannot find library, even though it is on search path
在Ubuntu 14.04中,我下载了一些源代码,这些源代码附带了一个makefile。然后我在它上面运行"make"来编译,这将构建一个可执行文件。当执行这个文件时,我收到以下错误:
./mt_test: error while loading shared libraries: libcudart.so.7.0: cannot open shared object file: No such file or directory
现在,文件libcudart.so.7.0
位于目录/usr/local/cuda-7.0/lib64
。但是在我的.bashrc
文件中,我有一行:export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
。此外,如果我从终端运行echo $LD_LIBRARY_PATH
,其中一个条目就是这个路径。在我的系统中没有libcudart.so.7.0
的其他副本。
是否有任何原因导致可执行文件可能无法找到这个库,即使它的目录是搜索目录之一?
奇怪的是,这个错误只发生在我的系统上安装Matlab之后。现在有一个名为libcudart.so.6.5
的文件位于/usr/local/MATLAB/R2015a/bin/glnxa64
,但该路径不是LD_LIBRARY_PATH
的一部分。
正如MadScientist可能正确猜测的那样,这可能是32位与64位的不匹配。执行如下命令:
file -L ./mt_test /usr/local/cuda-7.0/lib64/libcudart.so.7.0
对于两个文件,该命令应该报告ELF 32-bit LSB ...
或ELF 64-bit LSB ...
。如果其中一个文件是32位的,而另一个是64位的,那么它们是不兼容的。
您可以通过运行以下命令进一步了解动态链接器在哪里搜索libcudart.so.7.0
:
LD_DEBUG=files,libs ./mt_test
相关文章:
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 添加 #include 的搜索路径
- 为什么"/usr/include"不在 GCC 默认搜索路径中
- 如何从客户端为COM服务器设置dll搜索路径?
- 包含标头中的搜索路径因编译器而异
- 在英特尔C++编译器 (Linux) 的配置搜索路径中找不到文件可执行文件
- 即使定义了搜索路径,也找不到自定义共享库
- C++通过windows搜索路径查找可执行文件
- 如何在 Clang 的标准库中提取标头的搜索路径
- 搜索.NET组件的搜索路径取决于C /CLI DLL
- 在MacOS上编译一个动态库,库搜索路径指向同一目录(CMake)
- 阻止 GCC 在包含搜索路径上搜索当前目录"-I-"选项
- XCode 找不到 zmq.h,即使它位于 /usr/local/include 和标头搜索路径中
- 修剪递归搜索路径
- 插件 DLL 引用的 DLL 的搜索路径
- Clang 工具(libtooling):将标头搜索路径设置为标准 libs 标头.基础框架
- XCode3 - 库搜索路径和项目框架之间的关系
- 如何设置 dll 搜索路径
- 如何设置从CreateProcess创建的流程的搜索路径