问题描述:QT下运行的程序需要安装QT环境,为了让程序离开QT环境依旧可以照常运行,所以需要将程序打包发布。 使用QtCreator Release版本进行编译; 在上一步的目录中新建文件 “pack.sh”,输入以下内容: 为该文件添加执行权限 新建文件,文件名就是 为该文件添加执行权限 将该文件夹打包发布即可; 该内容后面有时间再补充 有些程序需要roo用户执行,比如串口通讯。程序发布后,sudo 运行程序时出现段错误,直接崩溃; 原因:不同电脑,QT的安装路径不一样导致的 QT打包部分大部分内容参考这个博客Linux下Qt程序的打包发布目录
Linux下的QT程序打包,发布流程
Ⅰ. 打包流程
1.编译
然后将编译出的可执行程序复制到一个空目录下;2.使用ldd命令查看和导出需要的库
#!/bin/sh exe="test" #你需要发布的程序名称,也就是上一步的可执行文件的文件名 des="/home/someone/QtProject/build-test-Desktop-Release/Test" #步骤1中的目录即本文件所在目录 deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }') cp $deplist $des
sudo chmod +x pack.sh
;
以上两处注释的地方需要根据自己的情况进行相应的修改。3.编写执行程序的sh文件
可执行程序的文件名 + .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 "$@"
sudo chmod +x test.sh
;4.运行程序
./test.sh
5.打包发布
Ⅱ. 为程序添加快捷方式,图标,启动器启动
Ⅲ. 碰到的问题
#1 普通用户能正常运行,root用户却不能运行
原因:用户的切换导致了程序运行环境的切换;
sudo gdb ./test.sh
调试,发现在加载libQt5SerialPort.so库的时候,程序崩溃;
分析:QT编译Release版本程序时,QT版本用的是5.13,在普通用户的环境下运行程序libQt5SerialPort.so库的版本是5.13的,然而因为我的电脑有不同版本的QT,切换root用户后,libQt5SerialPort.so库的版本连接的是5.8的;
解决方法:直接将对应的库拷贝到发布目录下;
库的路径在/home/robot/Qt5.13.0/5.13.0/gcc_64/lib
;
找不到路径时,可用locate命令定位locate libQt5SerialPort.so
#2 更换电脑运行程序,出现错误提示,”could not find the QT platform plugin ‘xcb’ in ’ ’ “;
解决方法:重新安装Qt,我的是默认在该路径/home/robot/Qt5.13.0/
Ⅳ. 参考博客
Desktop文件参考Linux下Desktop文件入门
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算