Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上

一、Linux下打包发布步骤如下

  • 编译应用程序环境:ubuntu18.04版本
  • 开发环境:Qt5.14.2
  • 编译环境:gcc_64
  • 要移植的电脑:ubuntu18.04版本,没有开发环境

第一步:打包依赖库

1、创建一个打包目录,把生成的可执行文件拷贝放在创建的打包目录下,这里我是创建了一个打包目录名称为:pack

创建目录命令:mkdir pack

cxx@cxx-virtual-machine:~/demo$ mkdir pack

 2、在打包目录下新建一个脚本pack.sh

 

内容如下:

#!/usr/bin/sh
exe="test" #程序名称
des="/home/cxx/demo/pack" #打包文件夹位置
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
cp $deplist $des

注意:根据你自己打包的程序名称和打包文件夹位置来修改

3、在脚本文件所在的文件目录下,命令行执行脚本:sh pack.sh

cxx@cxx-virtual-machine:~/demo/pack$ sh pack.sh 

进入 打包文件夹下,会发现很多库,这些就是要依赖的库

 4、接着进入Qt安装位置下编译环境的plugins目录下,这里我的Qt安装的目录是在/opt/Qt5.14.2/目录下,把plugins目录下的platforms目录复制到要打包的目录下

 执行命令:cp -r platforms/ /home/cxx/demo/pack

注意:/home/cxx/demo/pack要根据自己创建的打包文件夹所在位置修改

 注意:这是一个目录,不要把目录里面的文件拷贝出来,放进刚刚打包好的库一起

5、在qt安装编译环境目录的lib目录下,拷贝libQt5XcbQpa.so.5.14.2libQt5DBus.so.5.14.2到打包发布目录下

 

 6、检查platforms目录下是否有libqxcb.so库,如果没有,则需去qt安装目录下plugins目录下的platforms目录拷贝

 第二步:移植到其他电脑,并做好相关配置

1、将打包文件夹压缩,然后拷贝到要移植的电脑上,进行解压:tar -xvf pack.tar.xz

 2、进入到解压目录,在命令行执行,发现抱错,提示不到依赖库,

 

 

可是认真看一下,我们不是打包过来了吗?这些缺少的库,为什么还报错呢?

 因为在程序运行时,它默认寻找的库是在系统lib目录下,并不在发布的文件夹下,报错信息中就可以知道

3、修改库依赖路径,在命令行输入

export LD_LIBRARY_PATH='你的库路径':$LD_LIBRARY_PATH

export LD_LIBRARY_PATH='/home/cxx/tmp/pack':$LD_LIBRARY_PATH

4、再次运行,还是报错

报错信息不是很明确,但是根据提示肯定是少插件了,具体不知道是什么

在命令下执行:export QT_DEBUG_PLUGINS=1

这个命令可以帮我们输出程序运行时,加载插件时的调试信息

 执行命令后,再次执行,发现提示,少了libQt5XcbQpa.so.5的库,但是我们把Qt那边的库打包了libQt5XcbQpa.so.5.14.2的库,但是他要的是.so.5后缀的库,怎么办呢?

 5、执行ldd libqxcb.so,发现找不到libQt5XcbQpa.so.5.14.2libQt5XcbQpa.so.5

但是qt打包时我们有拿过来了,只是名字不同,我们进行软链接即可
执行命令:ln -s libQt5DBus.so.5.14.2  libQt5DBus.so.5

命令行执行:ln -s libQt5XcbQpa.so.5.14.2  libQt5XcbQpa.so.5

 然后再次执行,发现可以运行啦

 

  • 10
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Linux系统下,有两种常用的方法可以打包QT程序。 第一种方法是通过脚本进行打包。这种方法简单方便,但是打包程序不能在其他干净的Linux系统运行。你可以参考中提到的方法,编写一个脚本文件来进行打包。具体步骤如下: 1. 首先,确保你已经安装了所需的依赖库。你可以使用ldd命令来查找程序所需的共享库。 2. 创建一个脚本文件,可以使用任何你熟悉的文本编辑器。在脚本文件中,你需要指定程序的入口点以及程序所需的共享库路径。 3. 接下来,使用chmod命令给脚本文件添加可执行权限。 4. 最后,运行脚本文件来进行打包打包完成后,你会得到一个包含可执行文件和所需共享库的目录。 但需要注意的是,通过这种方式打包QT程序不能在其他干净的Linux系统运行,所以不太推荐使用。 第二种方法是使用linuxdeployqt工具进行打包。这个工具可以方便地将QT程序打包成一个独立的可执行文件,可以在任何Linux环境中直接运行。你可以从中提供的链接下载linuxdeployqt。 使用linuxdeployqt进行打包的步骤如下: 1. 首先,下载并解压linuxdeployqt工具。 2. 将你的QT程序复制到linuxdeployqt的目录中。 3. 打开终端,并切换到linuxdeployqt的目录。 4. 运行以下命令来打包程序: ``` ./linuxdeployqt <path_to_your_qt_program> -appimage ``` 其中,`<path_to_your_qt_program>`是你的QT程序的路径。 5. 打包完成后,你将得到一个AppImage文件,这个文件就是你的打包好的程序。 通过使用linuxdeployqt工具进行打包,你可以得到一个可以在任何Linux环境中直接运行QT程序。这种方法更加方便和可靠,推荐使用。 参考文献: 目前我接触到的Linux下的QT程序打包方法主要有两种:第一种:通过脚本进行打包,这种方法简单方便,但是通过这种方式打包QT程序,并不能放到另一台干净的Linux系统运行,所以不太推荐;第二种:通过Linuxdeployqt进行打包,通过这种方法打包QT程序也很方便,而且打包程序可以放到任何Linux环境下直接运行。下面我将详细介绍以下两种打包方式,大家可以根据自己的实际使用情况任意选择打包方式。 1.下载linuxdeployqt:https://github.com/probonopd/linuxdeployqt/releases

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值