Linux环境开发的Qt应用如何部署到Windows平台?
Linux开发Qt应用后部署到Windows的可行性及操作方案
答案是完全可行。你在Linux设备上找不到windeployqt是正常情况:该工具是Windows版Qt构建套件自带的依赖收集工具,你本机安装的Linux版Qt默认仅携带linuxdeployqt,自然没有对应Windows平台的工具。
所需额外准备资源
- 与开发时版本完全一致的Windows目标架构Qt交叉编译套件:Linux环境下优先选择MinGW版本的交叉编译套件,无需适配MSVC的闭源编译环境,操作成本更低
- 对应目标架构的MinGW交叉编译工具链:版本需要和Qt交叉编译套件使用的编译器版本完全匹配,避免出现编译或运行兼容问题
- 项目依赖的所有第三方库的Windows编译版本:不可直接复用Linux下的
.so库,需单独准备对应Windows平台的.dll文件 - (可选)Wine运行环境:用于在Linux下模拟运行Windows版
windeployqt,降低手动收集依赖的成本
具体操作步骤
- 第一步交叉编译项目:调用交叉编译套件中的
qmake(注意不可使用本机Linux版Qt的qmake)解析项目文件,再执行make完成编译,得到Windows平台可识别的.exe可执行文件 - 第二步收集运行依赖,两种方案二选一即可:
- 手动收集:将编译得到的exe放到空目录中,用交叉编译工具链自带的
mingw-objdump工具逐次排查exe及依赖库的关联dll,同时按Qt的目录结构复制对应的Qt插件(如platforms、imageformats等目录)、MinGW运行时库、第三方库到对应位置 - 自动收集:在Wine环境中安装对应版本的Windows版Qt,直接通过Wine调用Windows版
windeployqt,参数指向你交叉编译得到的exe路径,工具会自动将所有依赖库、插件、资源收集到exe所在目录
- 手动收集:将编译得到的exe放到空目录中,用交叉编译工具链自带的
- 第三步验证打包结果:将完整的打包目录传输到Windows设备上,直接运行exe验证功能正常即可。如果需要制作单文件安装包,可在Linux下用
nsis工具生成,也可以传输到Windows设备上用对应安装包制作工具处理
注意事项
- 如果项目使用了QML开发,需要额外收集QtQuick对应的模块和插件,漏装会导致程序启动后界面空白
- 所有放入打包目录的库文件必须是Windows平台的编译版本,不可混入Linux平台的库文件
内容的提问来源于stack exchange,提问作者siya
相关产品推荐
相关产品推荐

