【问题标题】:C++ Executable Error: cannot open shared object file: No such file or directoryC++ 可执行错误:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2017-04-09 11:50:44
【问题描述】:

我有一个项目路径,我在其中创建了一个可执行文件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

【问题讨论】:

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


    【解决方案1】:

    您可以适当地设置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 设置(这可能是你真正应该使用的)。

    【讨论】:

    • 非常感谢它的工作。现在我有一个不同的场景。我还想通过 Eclipse IDE 运行可执行文件,并且再次显示相同的错误。如何在 ecipse 中省略相同的错误?
    • 适当配置您的 IDE 或您的用户帐户(例如,通过 ~/.bashrc ....)
    • 我没有正确理解你,你能详细说明一下吗?
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2018-11-26
    • 2019-11-27
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多