一、准备工作
1、修改环境变量,能够找到qmake,可以修改/etc/profile也可以修改.bashrc文件
export PATH=/home/dingjing/Qt5.10.1/5.10.1/gcc_64/bin:$PATH #自己Qt安装的位置
export LD_LIBRARY_PATH=/home/dingjing/Qt5.10.1/5.10.1/gcc_64/lib:$LD_LIBRARY_PATH #找到Qt相关的lib,下面的雷同
export QT_PLUGIN_PATH=/home/dingjing/Qt5.10.1/5.10.1/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/dingjing/Qt5.10.1/5.10.1/gcc_64/qml:$QML2_IMPORT_PATH
2、下载linuxdeployqt
链接:https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage
下载好后拷贝到Linux中就可以用
二、进行操作
1、运行qt生成release版本的执行文件(二进制文件),例如test
2、创建文件夹,文件夹名称最好是用程序的名字,然后将test文件复制到此文件下
3、用linuxdeployqt进行打包,一定要加上-appimage选项,在打包前一定要确定所有的库文件都能自动索引到
例如:./linuxdeployqt-continuous-x86_64.AppImage test -appimage
4、修改desktop等文件,这个时候程序基本上就打包好了
三、问题解决(本人遇到的)
1、linuxdeployqt权限问题
因为打包时会到根目录下copy文件,所以最好给linuxdeployqt最高权限,或者在root用户下运行,都可以
2、libpq.so.5 => not found
因为libpq.so是依赖postgresql存在的,所以要安装postgresql
sudo apt-get install postgresql
感谢https://blog.csdn.net/silenceray/article/details/60571721给的参考
3、打包好,如果项目中有MySQL,拷贝到其他机器上:QSqlDatabase: QMYSQL driver not loaded
将之前手动编译好的libqsqlmysql.so文件复制到项目文件的lib里
需要重新编译的参考:https://blog.csdn.net/zjx18915341085/article/details/79570883
然后修改环境变量,将项目文件下的lib等路径写在.bashrc或者profile文件中
export LD_LIBRARY_PATH=/home/Ubuntu/test/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/home/Ubuntu/test/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/Ubuntu/test/qml:$QML2_IMPORT_PATH
修改完一定要source一下,然后ldd
libqsqlmysql.so看看是否还有not found的
感谢:https://www.cnblogs.com/findumars/p/6935231.html给的参考
感谢:https://blog.csdn.net/WMX843230304WMX/article/details/78748835给的参考