为什么要改变LD

我试图在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 ,然后报告它无法找到它。 任何人都可以请帮我理解这里发生了什么?

编辑2:根据@Tarun的建议,我已经在我的Qt文件夹上运行了ls -al 。 这里是输出 -

在这里输入图像描述


如果你看看你的ls -al的输出

ls -al输出

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


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


第一

难道那个密码不在你认为的位置?

你可以尝试添加

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

在脚本的顶部(假设bash shell,从这里开始)

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

第二

也许你应该考虑导出你的新LD_LIBRARY_PATH ,就像这样(从这里):

LD_LIBRARY_PATH=whatever
export LD_LIBRARY_PATH

第三

在更改变量(从此处)后,运行ldconfig命令以更新ld以更新它可能很有用:

sudo ldconfig
链接地址: http://www.djcxy.com/p/56805.html

上一篇: Why changing LD

下一篇: Source bash script to another one