如何为Linux的Qt应用程序进行二进制分发

Mic*_*ael 16 linux deployment qt distribution

我正在开发跨平台的Qt应用程序.虽然不是开源的,但它是免费软件.因此,我想将其作为编译二进制文件分发.

在Windows上没有问题,我将我的编译exe与MinGW和Qt的DLL一起打包,一切都很顺利.

但是在Linux上存在一个问题,因为用户可能在他/她的系统中拥有与我的完全不同的共享库.

Qt部署指南提出了两种方法:静态链接和使用共享库.第一个产生巨大的可执行文件,并且还需要Qt所依赖的许多库的静态版本,即我必须从划痕重建所有这些库.第二种方法是基于在应用程序启动之前重新配置动态链接器,对我来说似乎有点棘手.

任何人都可以分享他/她在Linux下分发Qt应用程序的经验吗?我应该使用什么方法?我可能遇到什么问题?有没有其他方法来完成这项工作?

Raz*_*iel 15

共享库是可行的方法,但您可以避免使用LD_LIBRARY_PATH(包括使用启动程序shell脚本运行应用程序等)使用-rpath编译器标志构建二进制文件,指向存储库的存储库.

例如,我将库存储在我的二进制文件旁边或我的二进制文件旁边名为"mylib"的目录中.要在我的QMake文件中使用它,我在文件中添加以下行.pro:

QMAKE_LFLAGS += -Wl,-rpath,\\$\$ORIGIN/lib/:\\$\$ORIGIN/../mylib/
Run Code Online (Sandbox Code Playgroud)

我可以使用我的本地库来运行我的二进制文件,覆盖任何系统库,而不需要启动器脚本.


syb*_*eon 12

您还可以在Linux上分发Qt共享库.然后,让您的软件加载那些而不是系统默认的软件.可以使用LD_LIBRARY_PATH环境变量覆盖共享库.这可能是最简单的解决方案.您始终可以在可执行文件的包装脚本中更改此设置.

或者,只需指定用户需要在系统上安装的最低库版本.