【教程】linux与windows环境下qt程序打包教程

一、演示环境

  • qt5.14.2

二、Linux

2.1 关联依赖文件

2.1.1 下载打包工具

在Windows环境下可以使用 Qt Creator自带的官方工具进行打包,而Linux环境下没有官方工具,需要借助第三方工具才能打包。如:linuxdeployqt、CQtDeployer、AppImageKit,甚至是自己编写shell将依赖导入指定目录。

这里以linuxdeployqt为例。

下载地址:https://github.com/probonopd/linuxdeployqt/releases

2.1.2 安装

下载完成后,为了后续使用方便,先修改名称

mv linuxdeployqt-xxxxx-x86_64.AppImage linuxdeployqt

修改为可执行权限

chmod 777 linuxdeployqt

放入/usr/local/bin目录,方便调用

sudo mv linuxdeployqt /usr/local/bin

测试是否安装成功

linuxdeployqt --version

# 出现下方版本即表示成功
linuxdeployqt  (commit 6fcaf74), build 55 built on 2023-09-23 13:33:41 UTC

2.1.3 设置环境变量

linuxdeployqt会根据环境变量找寻qt库文件

vim ~/.bashrc

增加bin、lib、plugins、qml路径(这步最重要)

# 填写qt安装目录下的相应路径,这里我只截取部分
export PATH=Qt5.14.2/5.14.2/gcc_64/bin:$PATH
export LIB_PATH=Qt5.14.2/5.14.2/gcc_64/lib:$LIB_PATH
export PLUGIN_PATH=Qt5.14.2/5.14.2/gcc_64/plugins:$PLUGIN_PATH
export QML2_PATH=Qt5.14.2/5.14.2/gcc_64/qml:$QML2_PATH

生效

source ~/.bashrc

测试

qmake --version
# 输出版本信息表示环境设置正确
QMake version 3.1
Using Qt version 5.14.2 in /home/xxx/install/Qt5.14.2/5.14.2/gcc_64/lib

2.1.4 创建项目目录

创建项目目录,接纳依赖文件以及可执行文件(可执行文件需要手动make一个Release版本的,set(CMAKE_BUILD_TYPE "Release") )

创建目录

# 这里就随意了,自己知道即可
mkdir test_prj
cd test_prj

将可执行文件拷贝至test_prj中

cp qt_prj test_prj

2.1.5 拷贝依赖

之后在test_prj下使用linuxdeployqt自动拷贝依赖

cd test_prj
linuxdeployqt qt_prj -appimage 

执行完毕后,出现如下报错可以忽略

检查

完成后目录中就包含了所需的所有依赖(除显示加载的so)

2.1.6 补充依赖

防止项目的运行环境中缺少GCC,报错找不到“GLBCXX_XX.XX.XX”,补充以下lib(可通过find找到其在本机的位置):

libstdc++.so.6.0.xx

libstdc++.so.6

libtbbmalloc.so.2

libtbbmalloc_proxy.so.2

libtbb.so.2

此外,如果项目需要静态资源文件,如项目中的resource文件夹,同样需要手动拷贝至项目根目录中。

2.2 测试运行

最后在可执行文件根目录进行测试

./qt_prj

大功告成~

2.3 tips

如果在运行时提示找不到xxx.so,且搜索的路径是root/而不是项目路径,可以在执行前输入:

export LD_LIBRARY_PATH="这里写项目path/lib":$LD_LIBRARY_PATH

三、Windows

在windows环境下较为简单,直接使用Qt Creator左下方build release,编译release版本的可执行文件,之后将文件复制到空文件夹中。

之后启动cmd命令行,使用

windeployqt xxx\release版本的.exe

即可。

若qt项目为窗口应用程序,需要在cmakelist中添加如下命令,防止启动时弹出命令行窗口。

set(CMAKE_CXX_FLAGS "-mwindows")
posted @ 2024-01-14 13:08  小拳头呀  阅读(1280)  评论(0编辑  收藏  举报