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

时间:2017-04-09 11:50:44

标签: c++ cmake shared-libraries opc-ua

我有一个项目路径,我已经创建了一个可执行文件 testsd

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

1 个答案:

答案 0 :(得分:0)

您可以适当地设置LD_LIBRARY_PATH环境。 见this。阅读ld-linux.so(8)

可以通过某种方式为整个会话设置LD_LIBRARY_PATH,例如通过适当地编辑~/.login~/.bashrc~/.bashenv~/.profile等...这将改变您开始的任何程序的行为,包括一些Eclipse IDE

阅读Drepper的How To Write Shared Libraries,特别是其他解决方案 - 例如。适当的-Wl,-rpath设置(这可能是您真正应该使用的设置)。