Mac环境下Qt 5.8跨编译至Linux的配置及Qt框架编译需求
嘿,我刚好折腾过类似的Qt跨平台移植,给你一套在Mac端用Qt Creator搞定Mac+Linux双平台构建的完整流程,亲测可行:
一、先配置Qt Creator的Linux交叉编译套件
这一步是基础,先把工具链接入Qt Creator:
- 先把你找到的Linux tool chain for Mac安装好,记清楚它的安装路径(比如常见的
/usr/local/x86_64-linux-gnu/bin) - 打开Qt Creator,走路径
工具 > 选项 > 构建和运行 > 工具链,点击「添加」选择GCC,然后手动指定交叉链的gcc和g++(比如x86_64-linux-gnu-gcc),给这个工具链起个好记的名字,比如「Linux Cross Compiler (Mac Host)」 - 切换到「构建套件(Kits)」选项卡,添加新套件:
- 名称设为「Linux (Cross Compiled from Mac)」
- 设备类型选「Desktop」
- 编译器选刚才刚加的Linux交叉工具链
- 调试器可以先留空,后续如果需要远程调试Linux程序再补配置就行
二、核心操作:在Mac端交叉编译Qt框架
因为你用的交叉工具链不带Qt,所以必须自己编译一套适配Linux的Qt库:
1. 先装编译依赖
用Homebrew搞定必要的工具和依赖:
brew install bison flex openssl
另外要下载和你Mac上Qt版本一致的Qt源码包(选开源版源码即可)。
2. 配置交叉编译参数
- 先建个目录存编译好的Linux版Qt,比如
~/Qt/LinuxCross/5.15.2(路径自己随便定,记清楚就行) - 打开终端,进到Qt源码的根目录,运行配置脚本,这里的参数要对应你的交叉链:
./configure -prefix ~/Qt/LinuxCross/5.15.2 \ -xplatform linux-g++-64 \ -device-option CROSS_COMPILE=x86_64-linux-gnu- \ -opensource -confirm-license \ -no-opengl \ # 不需要OpenGL就加这个,需要的话得额外配置交叉编译的OpenGL库 -skip qtwebengine \ # QtWebEngine编译巨麻烦,没用就跳过 -nomake examples -nomake tests
要是遇到找不到openssl的报错,就加这几个参数指定路径:-openssl-linked -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
3. 开始编译
配置成功后,直接开干:
make -j$(sysctl -n hw.ncpu) # 用满Mac的CPU核心,加快编译速度 make install
这个过程可能要1-2小时,别着急,该摸鱼摸鱼~
三、把交叉编译的Qt接入Qt Creator
- 回到Qt Creator的
工具 > 选项 > Qt版本,点击「添加」,找到刚才编译好的Qt的qmake路径(比如~/Qt/LinuxCross/5.15.2/bin/qmake),命名为「Qt 5.15.2 (Linux Cross)」 - 回到之前创建的Linux套件,把「Qt版本」选为这个新添加的交叉编译Qt,保存配置就行
四、双平台构建与部署
- Linux平台构建:在Qt Creator左侧的「项目」面板,切换到刚配置的Linux套件,点击构建,就能生成Linux可执行文件了
- Linux程序部署:生成的程序需要依赖Linux的Qt库,你可以用
linuxdeployqt工具打包成AppImage(Mac上可以用Docker跑这个工具),或者把依赖库一起打包,放到Linux机器上就能运行 - Mac平台构建:直接用原来的Mac套件正常构建就行,完全不冲突
小提醒:如果你的项目用到了第三方库(比如SQLite、OpenCV),也要交叉编译对应的Linux版本,不然链接的时候会报错哦~
内容的提问来源于stack exchange,提问作者Pichao
相关产品推荐
相关产品推荐

