Linux环境中Qt5程序发布

本文介绍如何将Qt5应用程序打包成可在目标系统上独立运行的版本,包括生成Release版本的可执行文件、复制所需的.so文件及链接,并通过创建shell脚本和特定文件夹结构确保正确加载共享库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上也看到这样的博客, 但都没有解决我的问题, 脑壳痛!

在此我把我的方法发出来, 希望能帮到在看的你!!! 


(1) 在Qt5中生成一个Release版本的可执行文件             obj


(2)用ldd obj可看到关于obj的 .so文件, 在开发环境中的相应目录下把关于libQt5*.so(共享库 和 链接)都copy到test(自己随意创建一个名字:mkdir  test),  可执行文件 (obj) 也放到 test 中, 最后创建一个与可执行文件同名的shell脚本(我这里名字就为obj.sh);

 obj.sh 脚本中内容如下:

#!/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 "$@" 
运行脚本:

sh obj.sh

或者

chmod a+x obj.sh

./boj.sh

出现如下错误:


解办法:

(3)在test中创建(只能是这个文件夹:mkdir platforms)platforms文件夹,  把 libqxcb.so(自己到所按装Qt的目录下去搜一下就能出来)

放到自己创建的platforms中,再执行脚本还是会报错, ldd libqxcb.so 会发现 libQt5DBus.so.5 、 libQt5XcbQpa.so.5两个文件test中

是没有的,自己到所按装Qt的目录下去搜一下把这个两个共享库文件和链接都copy 到 test 中;OK! 大功告成!

现在test中的文件夹中有: libQt5*.so (共享库文件和其链接文件), platforms文件夹, 可执行文件obj, shell脚本obj.sh(路径设置); 

而platforms只有一个libqxcb.so文件!!!

现在把test文件夹打包压缩放到目标环境中去, 解压过后, 运行obj.sh脚本, OK!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值