C++ 可执行文件错误:无法打开共享对象文件:没有此类文件或目录



我有一个项目路径,我在其中创建了一个经过测试的可执行文件:

Caspian@Caspian-VirtualBox:~/TestProject/build/linux/debug/bin/testsd

项目目录和层次结构如下:

/TestProject
|-build/linux/debug/bin
|-ExtLib/folder/lib(containing .a and .so files)
|-ExtLib/folder/src(containing multiple sub folders with .cpp files)
|-ExtLib/folder/include(containing multiple sub folders with .cpp files)
|-src(containing multiple sub folders with .cpp files and mainc.pp)
|-tests(containing Runtests.cpp and catch.hpp files)   

问题是当我运行此可执行文件(./testsd(时,我遇到以下错误:

./testsd: error while loading shared libraries: libuastackd.so: cannot open shared object file: No such file or directory
libuastackd.so 文件包含在 ExtLib/folder/lib

和 ExtLib/folder/src/stack/lib 文件夹中。谁能帮忙,我该如何克服这个问题?

谢谢 rG

您可以适当地设置LD_LIBRARY_PATH环境。看到这里。阅读ld-linux.so(8(。

有一些方法可以为您的整个会话设置LD_LIBRARY_PATH,例如通过适当地编辑~/.login~/.bashrc~/.bashenv~/.profile等......这将改变您之后启动的任何程序的行为,包括一些Eclipse IDE。

阅读 Drepper 的《如何编写共享库》,特别是对于其他解决方案 - 例如适当的-Wl,-rpath设置(这可能是您真正应该使用的(。

最新更新