ubuntu20.04 使用linuxdeployqt打包一个QT程序
问题描述:ubuntu 打包一个QT程序
解决方法:
1.安装linuxdeployqt
linuxdeployqt的github网址:linuxdeplyoqt
我下载好了,适合大家的直接拿,已经改好名字为linuxdeployqt
链接: https://pan.baidu.com/s/1r25aVwRAh-sx4ksadj6NXg?pwd=buvk 提取码: buvk
(1)修改权限
sudo chmod a+x linuxdeployqt
(2)拷贝系统目录下
sudo cp linuxdeployqt /usr/local/bin/
(3)验证
linuxdeployqt -version
2.生成可执行文件
(1).pro加入代码
TEMPLATE = app #这生成一个exe
QMAKE_LFLAGS += -no-pie
注意事项:代码放在.pro文件末端
(2)选择release,没有就添加
(3)最后生成可执行文件,文件属性是executable
3.正式打包
(1)创建一个文件夹,把刚生成可执行文件复制到可执行文件下
(我创建的文件夹是execute)
(2)在文件夹下,打开终端执行代码
linuxdeployqt untitled2 -appimage
这时候可能会报这个错误
就在desktop文件下加入
Categories=Application;
再重新执行
linuxdeployqt untitled2 -appimage
生成文件
4.执行脚本-拷贝依赖库
再刚刚的文件夹下打开一个新的终端,创建两个脚本一个pack.sh 一个以你可执行文件名字为名的脚本
输入
gedit pack.sh
写入
#!/bin/sh
exe="untitled2" #程序名称
des="/home/wxw/QT/build-untitled2-unknown-Release/execute" #创建文件夹的位置
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des
再输入
gedit untitled.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 "$@"
终端执行
chmod a+x pack.sh
sudo ./pack.sh
就此完成了,Done