QT Creator C++开发如何编译生成Linux平台可执行程序
Linux平台Qt程序编译配置方案
Windows环境下编译生成的.exe是PE格式可执行文件,和Linux系统原生支持的ELF二进制格式不兼容,无法直接运行。要生成适配Linux的可执行程序,优先选择原生编译方案,兼容性问题最少。
方案1:Linux原生环境编译(推荐)
这是生产环境最常用的方案,几乎不会出现奇怪的ABI兼容、依赖缺失问题:
- 先在目标Linux发行版上安装Qt开发环境,以Ubuntu/Debian系为例,终端执行命令安装基础依赖和Qt Creator:
sudo apt update # Qt5环境用这个命令 sudo apt install build-essential qtbase5-dev qt5-qmake qtcreator # Qt6环境替换为qt6对应的包即可 - 将Windows端的项目源码完整拷贝到Linux系统,注意只需要拷贝
.pro项目文件、.cpp/.h源码、.qrc资源、.ui界面文件,不要带Windows下生成的debug/release构建目录、.exe文件、旧的Makefile等构建产物。 - 打开Linux端的Qt Creator,直接导入拷贝过来的
.pro项目文件,构建套件选择默认安装的Desktop Qt x.x.x GCC 64bit即可,自定义构建目录后直接点击构建。 - 构建完成后会生成无后缀的ELF格式可执行文件,终端给执行权限即可启动:
chmod +x 你的程序名 ./你的程序名 - 代码适配注意:如果项目里用了Windows专属API(比如引入
windows.h、写死了C:\类Windows路径、调用了Win32接口),需要用Qt内置的平台宏做隔离:
Qt自带的跨平台封装类(比如#ifdef Q_OS_WIN // 仅Windows平台生效的代码 #endif #ifdef Q_OS_LINUX // Linux平台的对应实现 #endifQFile/QMainWindow/QProcess等)不需要做任何修改,直接兼容两个平台。
方案2:Windows端交叉编译(不推荐,仅适合临时测试)
如果不想额外安装Linux系统/虚拟机,可以在Windows端的Qt Creator里配置交叉编译工具链直接生成Linux可执行文件,但后续部署依赖问题较多:
- 下载和你当前Qt版本严格匹配的Linux交叉编译工具链(基于gcc的Linux目标平台编译套件),版本不匹配会直接导致编译失败或者运行崩溃。
- 打开Qt Creator,依次进入
工具 -> 选项 -> Kits,分别配置三个部分:- 编译器:添加交叉编译工具链里的
gcc/g++路径,ABI选择linux x86_64 通用elf格式 - Qt版本:添加交叉编译工具链自带的
qmake路径 - 调试器:添加工具链配套的
gdb调试程序路径
- 编译器:添加交叉编译工具链里的
- 新建一个编译套件,关联刚才配置的编译器、Qt版本、调试器,设备类型选通用Linux设备。
- 选择这个新建的交叉编译套件构建项目,即可生成Linux下可运行的ELF格式程序。
部署注意事项
编译生成的程序如果要放到其他没有安装Qt开发环境的Linux机器上运行,需要把依赖的Qt库、插件一起打包,可使用linuxdeployqt类的打包工具自动收集依赖,不需要手动逐个拷贝库文件。
不要尝试用Wine运行Windows版exe做正式发布,性能和兼容性都无法保证,仅适合临时调试场景。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

