为什么更改 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
,但该文件根本不存在。所以您需要设置正确的软链接路径或将文件放在同一目录中
我试图在 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
,但该文件根本不存在。所以您需要设置正确的软链接路径或将文件放在同一目录中