Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用应用程序部署Qt库?_Linux_Qt_Shared Libraries_Dynamic Linking - Fatal编程技术网

Linux 如何使用应用程序部署Qt库?

Linux 如何使用应用程序部署Qt库?,linux,qt,shared-libraries,dynamic-linking,Linux,Qt,Shared Libraries,Dynamic Linking,这应该很简单,但我有麻烦。我想在安装文件夹中包含一些与我的应用程序共享的Qt库,这样用户就不必单独下载Qt。在Windows上,这似乎工作得很好,但Ubuntu抱怨当Qt库与应用程序位于同一文件夹中时,无法找到它们 如何将安装目录添加到共享库搜索路径?我可以通过在.pro文件中添加以下行将安装目录添加到共享库搜索路径,该文件将二进制文件的rpath设置为$ORIGIN(安装文件夹)。我需要在我当前的机器上添加QT lib的位置(/usr/lib/qt5.5和/usr/lib/qt5.5/lib)

这应该很简单,但我有麻烦。我想在安装文件夹中包含一些与我的应用程序共享的Qt库,这样用户就不必单独下载Qt。在Windows上,这似乎工作得很好,但Ubuntu抱怨当Qt库与应用程序位于同一文件夹中时,无法找到它们


如何将安装目录添加到共享库搜索路径?

我可以通过在.pro文件中添加以下行将安装目录添加到共享库搜索路径,该文件将二进制文件的rpath设置为$ORIGIN(安装文件夹)。我需要在我当前的机器上添加QT lib的位置(/usr/lib/qt5.5和/usr/lib/qt5.5/lib),以便在QtCreator中构建项目

unix:!macx {
    # suppress the default RPATH if you wish
    QMAKE_LFLAGS_RPATH=
    # add your own with quoting gyrations to make sure $ORIGIN gets to the command line unexpanded
    QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN\':/usr/lib/qt5.5:/usr/lib/qt5.5/lib"
}

(unix:!macx行使其仅适用于linux)

Windows、linux和OSX的行为完全不同。Windows最简单:转储应用程序目录中的所有dll。OSX是下一个,Linux是最难的


Linux有特定的搜索路径来搜索共享对象。这些搜索路径主要是系统库,可能还有一些用户库。由于您不想弄乱用户的系统文件,因此希望在应用程序目录中有共享对象。这是可能的,但您必须告诉Linux读取该目录。可以通过设置环境变量LD_LIBRARY_PATH来实现这一点。您可以使用脚本来完成此操作。请参阅。

小心,因为这是一件可能会侵犯许可权的事情。首先检查Qt库是否允许您在没有许可的情况下分发其软件。