加载共享库时出错:即使在使用 LD_LIBRARY_PATH 并更改 $PATH 后也没有这样的文件或目录

Posted

技术标签:

【中文标题】加载共享库时出错:即使在使用 LD_LIBRARY_PATH 并更改 $PATH 后也没有这样的文件或目录【英文标题】:Error while loading shared libraries: No such file or directory even after using LD_LIBRARY_PATH and changing $PATH 【发布时间】:2017-12-06 11:52:58 【问题描述】:

我是 Linux 环境的新手。我正在尝试在 Codelite 上运行我的 C++ 文件,它给了我一个不会发生的错误。 我有一个大华 SDK 的 DLL 文件夹。它包含共享的 .so 库。自过去 2 天以来,我收到此错误,无法运行我的项目!

./Dahuatest1:加载共享库时出错:libdhnetsdk.so:无法打开共享对象文件:没有这样的文件或目录

我已经试过了:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tarak/Documents/General_NetSDK_Eng_Linux64_IS_V3.48.1.R.170623/NetSDK_Eng_Bin/Demo_Src/DLL

导出 LD_LIBRARY_PATH

ldconfig

其中还包括我的 DLL 文件夹。但仍然得到同样的错误。

我还尝试将路径更改为 ~/.bashrc 中的文件夹:

导出 $PATH=$PATH:/home/tarak/Documents/General_NetSDK_Eng_Linux64_IS_V3.48.1.R.170623/NetSDK_Eng_Bin/Demo_Src/DLL

这也失败了!

我应该怎么做才能得到输出??

在 codelite 中,我将链接器搜索路径设置为我的 DLL 文件夹。 并且编译器“包含路径”也作为我的 DLL 文件夹

这是我的文件夹的屏幕截图: Project file

DLL folder

【问题讨论】:

【参考方案1】:

试试

export LD_LIBRARY_PATH=/home/tarak/Documents/General_NetSDK_Eng_Linux64_IS_V3.48.1.R.170623/NetSDK_Eng_Bin/Demo_Src/DLL && ./Dahuatest1

同样,尝试将 *.so 文件移动(或更好的符号链接)到系统自动查找共享库的目录(例如 /usr/local/lib)

【讨论】:

bash: ./Dahuatest1: 没有这样的文件或目录 ./Dahuatest1 - 是可执行文件的路径。我从你的问题中得到它。只需将其修改为正确的路径。同样,在 LD_LIBRARY_PATH= 之后放置“dll”文件夹的正确路径 @PhantomLord 我有同样的问题,并通过在环境设置中设置 LD_LIBRARY_PATH 暂时解决了它。 CodeLite 可以按预期运行可执行文件。但是,如果我在命令行中运行可执行文件,它会失败。我制作了设置 LD_LIBRARY_PATH 的 .sh,然后启动了可执行文件。但是,如果我可以只编译将在相对于可执行路径的路径中搜索 .so 文件的可执行文件,我会更喜欢。有什么办法吗?

以上是关于加载共享库时出错:即使在使用 LD_LIBRARY_PATH 并更改 $PATH 后也没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

加载共享库时出错:libboost_mpi.so.1.65.1:没有这样的文件或目录 - 即使文件在那里

如何在 GCC Linux 中指定非默认共享库路径?运行时出现“加载共享库时出错”

Rails:运行 wkhtmltopdf 时出错——(加载共享库时出错)

加载共享库时出错:libncurses.so.5:

加载共享库时出错:libMagickCore-7.Q16HDRI.so.6

加载共享库时出错,无法打开共享对象文件:没有这样的文件或目录(hiredis)