在Linux打包Qt程序发布后在目标生产环境下出现以上问题,这个可能与打包方式有关。
linuxdeployqt
在Linux下Qt程序打包建议使用linuxdeployqt打包,传统的脚本打包方法虽然打包的程序基本不会出现缺少库文件的情况(因为所有程序使用到的库文件是一个一个拷贝进去的),但是传统的脚本打包法属于是玻璃大炮,很容易在编写脚本的地方出现问题,因此这里推荐使用linuxdeployqt进行打包。
linuxdeployqt打包基本流程(以centos7.5为例)
1.首先检出linuxdeployqt源码
git clone https://github.com/probonopd/linuxdeployqt-git --depth=1
执行此条命令前确保已经安装了git 并且保证网络连接
安装git:centos:sudo yum install git
unbantu:sudo apt install git
2.检出源码后进入源码文件夹并打开终端
执行qmake(确保已经安装了qmake和make)
make
会在当前目录下生成一个文件名为bin的文件夹
进入bin目录下
正常情况会生成一个linuxdeployqt的可执行文件
将这个可执行文件拷贝一份到usr/local/bin下方便当作命令使用
3.检查是否安装完成
完成上述步骤在终端输出linuxdeployqt
正常情况会输出以上信息
打包过程
1.用Qt Creator中打开你的Qt源码,在项目于一栏下勾选show build
在左下角切换至Release,编译之后会在你show build下生成你的Release包,进入包中找到Release下的可执行文件。
2.新建一个文件夹,将上一步拷贝的Release下的可执行文件放到此处
执行下面步骤前确保你安装了完整的Qt库
3.根据配置需求文档中的最后一步配置好环境变量
export PATH=/home/betterjason/Qt/5.15.2/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=Qt安装路径/Qt/5.15.2/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=Qt安装路径/Qt/5.15.2/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=Qt安装路径/Qt/5.15.2/gcc_64/qml:$QML2_IMPORT_PATH
注!!!!:/home/brtterjason/为Qt安装路径 此处应该与本机Qt安装路径一致
Qt/5.15.2/ 此处以实际命名为准,若目前工程所属版本为Qt5.7.1 此处应为Qt5.7.1/5.7/
4.使用linuxdeployqt打包,具体步骤为下
linuxdeployqt app -verbose2(不建议使用此命令,很容易出现缺少库文件的情况)
linuxdeployqt app -appimage
此处app为你的项目的可执行文件名
上述步骤执行完就是这个Qt项目在Linux下的打包
This application failed to start because it could not find or load the qt platform plugin “xcb"
正常步骤
终端输入 export QT_DEBUG_PLUGINS=1
这一步可以展示程序详细的运行步骤
这样就可以很清楚看到少了哪个库文件
然后在QT的lib里找到这个文件放到程序同级目录即可
但是这个方法不保险,因为每次缺少的库可能不同
终极解法
使用linuxdeployqt app -appimage
然后将Qt5.7/5.7/gcc_64/下的所有文件拷一份到项目同级目录即可