很少在Linux平台打包Qt程序,记录一下在Linux平台打包Qt程序的步骤。以防以后忘记。
step1
创建一个空文件夹,取名为项目文件名称(注意自己的配置文件中是否有文件夹名称要求),为了方便叙述,我们暂且称这个文件夹为主文件夹,这个文件夹用于存放打包文件。并在其中创建一个名为 lib 的子文件夹,我们暂且称这个子文件夹为库文件夹。
step2
用QtCreator在Release模式下编译源代码,在Release文件中找到可执行程序,将其拷贝到step1创建的主文件夹中。
step3
将配置文件,资源文件等拷贝到step1创建的主文件夹中。如果这些配置文件,资源文件放置在文件夹中,就拷贝文件夹,如果它们在和源程序代码同一级文件夹中,就拷贝这些文件。
step4
使用 ldd指令 查询可执行文件依赖的库:ldd 可执行文件名称,将其中依赖的Qt库和第三方库拷贝到step1创建的库文件夹中。系统库一般不用拷贝。
step5
将Qt安装目录中的platforms文件夹拷贝到step1创建的主文件夹。至此,已经打包完成。
platforms文件夹路径一般为:/opt/Qt/Qt版本号/gcc_64/plugins/
step6
将step1创建的主文件夹拷贝到目标系统中(一般为不包含Qt环境的系统)。
step7
将step1中创建的库文件夹下的所有库拷贝到目标系统的系统路径下,即:usr/lib/
step8
在目标系统中运行可执行程序。
错误处理
如果可执行程序运行失败,在step1文件夹中打开终端,输入: ./可执行程序名称
如果错误信息为:qt.qpa.plugin: Could not load the Qt platform plugin “xcb”
就在libXcb.so所属目录中查看该动态库依赖项:ldd libXcb.so,将其中not find的依赖项从Qt环境的机器中拷贝这些缺失的库到目标系统中。
暂时运行
终端输入:
export LD_LIBRARY_PATH='/.../lib':$LD_LIBRARY_PATH
export QT_DEBUG_PLUGINS=1
只能暂时运行,关闭终端后失效。