为什么更改 LD_LIBRARY_PATH 对 Ubuntu 没有影响?

Why changing LD_LIBRARY_PATH has no effect in Ubuntu?

我试图在 Ubuntu 16.04 上部署我的应用程序。所以我制作了一个具有以下层次结构的包 -

Package
|
----bin
    |
    -----application
    -----application.sh
    -----Qt
         |
         -----necessary qt libraries
         -----platforms

这是 application.sh 文件 -

#!/bin/sh
export LD_LIBRARY_PATH=`pwd`/Qt
./application

当我执行 application.sh 文件时,它显示找不到 libQt5MultimediaWidgets.so.5 文件。但它在 Qt 文件夹中。此外,当我在导出 LD_LIBRARY_PATH 后从 application.sh 文件打印 ldd application 时,它会给我以下输出 -

请检查标记的部分。谁能解释一下为什么即使在导出 LD_LIBARRY_PATH 后也找不到 Qt 文件夹中的库?

编辑:

所以按照@Zang 的建议,我检查了调试日志,这里是 -

请检查标记的部分。

它似乎真的在尝试实际的 libQt5MultimediaWidgets.so 然后报告找不到它。谁能帮我了解这里发生了什么?

Edit-2: 根据@Tarun 的建议,我的 Qt 文件夹中有 运行 ls -al。这是输出 -

第一

会不会是密码不在您假设的位置?

您可以尝试添加

# Figure out where the application.sh script is located
scriptpath="$( cd "$(dirname "[=10=]")" ; pwd -P )"
# Make sure our pwd is that location
cd  "$scriptpath"

在脚本顶部(假设 bash shell,来自 here

通过这样做,Qt 文件夹的所有相对路径都将有效。

第二

也许您应该考虑导出新的 LD_LIBRARY_PATH,像这样(来自 here):

LD_LIBRARY_PATH=whatever
export LD_LIBRARY_PATH

第三

运行 ldconfig 命令在更改变量后更新 ld 可能有用(来自 here):

sudo ldconfig

您的 Qt 目录中的所有文件实际上是同一目录中不存在文件的 simlink,因此无法找到它们。

根据显示的屏幕截图,文件 libQt5MultimediaWidgets.so 不存在于 /Desktop/package/bin/Qt 中。

如果您查看 ls -al

的输出

这些是您拥有的软链接。您的软链接 libQt5MultimediaWidgets.so.5 指向同一目录中的 libQt5MultimediaWidgets.so.5.9.2,但该文件根本不存在。所以您需要设置正确的软链接路径或将文件放在同一目录中