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
环境变量覆盖共享库.这可能是最简单的解决方案.您始终可以在可执行文件的包装脚本中更改此设置.
或者,只需指定用户需要在系统上安装的最低库版本.