Linux下QT打包发布——支持(龙芯|银河|方德|CentOS|Ubuntu)

QT打包基于平台的不同有两种方式:1.基于第三方工具:linuxdeployqt (官网下载的可执行程序仅支持x86_64架构,其他架构需自行下载源码编译方可运行)2.基于shell脚本方式拷贝相应依赖文件 (推荐非x86_64的一些国产系统使用)

1.基于第三方工具:linuxdeployqt (官网下载的可执行程序仅支持x86_64架构,其他架构需自行下载源码编译方可运行)

1).github上有编译好的可执行程序:https://github.com/probonopd/linuxdeployqt/releases
Linux下QT打包发布——支持(龙芯|银河|方德|CentOS|Ubuntu)

2).将下载后的文件赋予权限,并放入/usr/local/bin目录中

chmod 777 linuxdeployqt-6-x86_64.AppImage
mv linuxdeployqt-6-x86_64.AppImage /usr/local/bin

执行 linuxdelpoyqt --version 看是否有版本信息打印,以此判断命令是否正常

root@test-KaiTianM610B-D120:~# linuxdeployqt-6-x86_64.AppImage --version
linuxdeployqt 5 (commit 37631e5), build 631 built on 2019-01-25 22:47:58 UTC

3).配置QT环境变量

vi /etc/profile    #打开文件

在尾部添加内容如下:(/opt/Qt5.12.2是我的QT安装路径,请自行替换),然后保存并退出vi

export PATH=$PATH:/opt/Qt5.12.2/5.12.2/gcc_64/lib/:/opt/Qt5.12.2/5.12.2/gcc_64/lib:/opt/Qt5.12.2/5.12.2/gcc_64/include:/opt/Qt5.12.2/5.12.2/gcc_64/bin

source /etc/profile  #重新加载配置,使环境变量生效

4). 新建一个文件夹如test,将编译的可执行文件拷贝进去,比如执行文件叫checkServer 执行ldd checkServer 确定动态库是否都能找到,如遇到xxxxx not found 则需要配置对应的so路径到LD_LIBRARY_PATH环境变量中;

比如我项目中有一个lib目录专门存放第三方so库,ldd命令执行后 这些库找不到,则需要把该lib目录添加到LD_LIBRARY_PATH环境变量中: (/home/test/checkServer是我的项目目录)

vi /etc/profile
export LD_LIBRARY_PATH=/home/test/checkServer/lib:$LD_LIBRARY_PATH

source /etc/profile #重新加载环境变量
ldconfig #将新的动态链接库为系统所共享

5).一切准备就绪,输入打包命令并等待打包完成即可。

linuxdeployqt-6-x86_64.AppImage checkServer -appimage

2.基于shell脚本方式拷贝相应依赖文件 (推荐非x86_64的一些国产系统使用)

1).首先执行第一种方法的第4步 (如新建目录名为 test,下面所有test都表示我们的打包目录)

2).在test中新建脚本copy.sh

#!/bin/bash
LibDir=$PWD"/lib" #获取lib目录路径
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir) #创建lib目录
for Variable in ${lib_array[@]} #循环所有依赖的动态库路径
do
cp "$Variable" $LibDir #拷贝到lib目录中
done

3).给脚本赋予权限

chmod 777 copy.sh

4).执行脚本,参数是可执行文件名

./copy.sh checkServer

5).将生成的lib目录中的所有文件移动到上层,与可执行文件同级,然后将lib目录删除

6).进入QT安装目录的/opt/Qt5.12.2/5.12.2/gcc_64/plugins/platforms 将copy.sh放到该目录下并执行./copylib.sh libqxcb.so Linux下QT打包发布——支持(龙芯|银河|方德|CentOS|Ubuntu)

7). 将生成的platforms整个目录移动到test下,将lib中的所有文件放到test目录下(即test/platforms/lib* 移动到test),然后将test/platforms/的lib目录及copy.sh脚本文件删除

8).在test目录下编写.sh运行脚本,脚本名必须与可执行程序一致,比如这里叫checkServer.sh(因为如果目前将程序发送到其他电脑上,执行程序则因系统无法获取so库路径,将无法运行)

#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

9).赋予运行脚本权限

Chmod 777 checkServer.sh

10).现在可以将test目录拷贝到其他主机上,通过./checkServer.sh来运行 (脚本作用是在运行可执行文件前,先将test目录中的依赖库路径加入到环境变量中,使系统知道这些库的存在)

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Linux下QT打包发布——支持(龙芯|银河|方德|CentOS|Ubuntu)

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Linux下QT打包发布——支持(龙芯|银河|方德|CentOS|Ubuntu)
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏