【问题标题】:Why changing LD_LIBRARY_PATH has no effect in Ubuntu?为什么更改 LD_LIBRARY_PATH 在 Ubuntu 中无效?
【发布时间】:2018-05-20 20:00:33
【问题描述】:

我试图在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。这是输出 -

【问题讨论】:

  • 使用export LD_DEBUG=all启用加载器调试输出
  • @ZangMingJie 我已经做到了,并在编辑中添加了一些相关信息。你能查一下吗?
  • 您在混合 32 位和 64 位版本吗?检查so文件架构。
  • 可能是某种权限问题?你可以ls -al <highlighted path> 看看会发生什么吗?
  • 我在那里看不到实际文件?软链接指向同一文件夹中的文件,我没有看到该文件

标签: qt ubuntu shared-libraries


【解决方案1】:

如果您查看ls -al 的输出

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        第一

        会不会是 pwd 不是你假设的地方?

        你可以试试添加

        # 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,来自 here

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

        第二

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

        LD_LIBRARY_PATH=whatever
        export LD_LIBRARY_PATH
        

        第三

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

        sudo ldconfig
        

        【讨论】:

          猜你喜欢
          • 2013-07-13
          • 2012-07-24
          • 1970-01-01
          • 1970-01-01
          • 2010-10-25
          • 1970-01-01
          • 1970-01-01
          • 2015-08-03
          • 1970-01-01
          相关资源
          最近更新 更多