☰
Qt 4.8.7 MinGW 安装全攻略:老项目环境搭建与避坑指南
2026/10/22 5:10:35 网站建设 项目流程

1. 为什么还要折腾 Qt 4.8.7 这个老版本

先把话说在前头:如果你现在打开 Qt 官网,默认推荐的都是 Qt 5 或 Qt 6 的在线安装器,Qt 4.8.7 这个版本早就进了历史归档区。但我还是花了整整一个下午,在一台旧机器上把 Qt 4.8.7 MinGW 版从头装了一遍,原因很实在——手头有个维护了快十年的老项目,代码里大量用了 Qt 4 时代的 API,比如QHttp、QScriptEngine这些在 Qt 5 里被移除或大改的模块,直接迁到新版本编译,报错能刷满整个屏幕。与其花几周时间做迁移适配,不如先把老环境搭起来,让项目能跑、能改、能出包,这才是最务实的做法。

Qt 4.8.7 是 Qt 4 系列的最后一个补丁版本,发布于 2015 年前后,配套的 MinGW 版本通常是 4.8.2 或 4.4.0 这类老编译器。这套组合在当年是 Windows 平台上做 Qt 开发最省心的方案:不需要额外装 Visual Studio,不需要配置复杂的编译环境,下载一个几百兆的离线安装包,一路下一步就能得到一个能写代码、能编译、能调试的完整 IDE。对于还在维护老项目的开发者、想研究 Qt 早期架构的学生、或者需要复现某些历史行为的技术人员来说,这套环境依然有它的价值。

这篇文章记录的就是我完整走一遍安装流程的实操过程,包括安装包怎么找、组件怎么选、环境变量怎么配、装完之后怎么验证、以及踩到的几个不大不小的坑。如果你也在为老项目的编译环境发愁,或者单纯想看看十几年前的开发工具长什么样,这篇记录应该能帮你省下不少翻文档的时间。

2. 安装前的准备工作与版本选型思路

2.1 为什么锁定 MinGW 而不是 MSVC

Qt 在 Windows 上有两大编译器阵营:MSVC 和 MinGW。MSVC 是微软自家工具链,性能好、调试信息全,但需要装对应版本的 Visual Studio,而且 Qt 4.8.7 配套的 MSVC 版本通常是 VS2010 或 VS2008,这些老 IDE 现在装起来本身就一堆麻烦。MinGW 则是 GCC 的 Windows 移植版,完全开源、独立打包,Qt 官方直接提供了捆绑 MinGW 的安装包,下载下来就是一个自包含的环境,不依赖任何外部编译器。

我选 MinGW 的另一个原因是兼容性。老项目里有些第三方库是用 MinGW 编译的静态库,如果换成 MSVC,ABI 不兼容,链接阶段就会报一堆未定义符号。MinGW 和 Qt 4.8.7 的搭配是当年最主流的组合,社区里能找到的编译问题解决方案也最多,遇到坑更容易搜到答案。

提示:MinGW 版本要和 Qt 安装包里捆绑的版本一致。Qt 4.8.7 的离线包通常带的是 MinGW 4.4.0 或 4.8.2,不要自己另外下一个新版 MinGW 混用,否则编译 Qt 库或链接时可能出现奇怪的错误。

2.2 安装包从哪里获取

Qt 4.8.7 的离线安装包现在不在官网主推页面上了,需要去归档目录里找。文件名一般长这样:qt-win-opensource-4.8.7-mingw.exe,大小在 300MB 到 400MB 之间。下载的时候注意区分 32 位和 64 位——Qt 4.8.7 的 MinGW 版基本都是 32 位的,即使你的系统是 64 位 Windows,装的也是 32 位 Qt,这很正常,不影响使用。

下载完成后先别急着双击,右键看一下文件属性,确认数字签名信息是否完整。老安装包在网络上流传的版本很多,有些被重新打包过,可能夹带不需要的东西。如果条件允许,尽量从官方归档地址获取,或者用校验值比对一下文件完整性。

2.3 系统环境的前置检查

安装之前我做了几项检查,这些看起来琐碎,但能避免装到一半才发现问题:

  • 磁盘空间:Qt 4.8.7 完整安装大约占 1.5GB 到 2GB,加上后续编译产生的中间文件,建议预留至少 5GB 空间。
  • 路径规划:安装路径不要带中文、空格和特殊符号。我见过有人装在D:\我的软件\Qt 4.8.7下面,结果编译时各种路径解析错误。推荐用纯英文短路径,比如D:\Qt\4.8.7。
  • 杀毒软件:安装过程中会释放大量小文件,某些杀毒软件会逐个扫描导致安装极慢,甚至误删文件。临时关闭实时防护能省不少时间。
  • 系统兼容性:这个安装包是为 Windows XP/7 时代设计的,在 Windows 10 或 11 上运行需要设置兼容模式。右键安装程序,在“兼容性”选项卡里勾选“以兼容模式运行这个程序”,选择 Windows 7,同时勾选“以管理员身份运行”。

3. 安装过程逐步拆解与关键选项说明

3.1 安装向导的每一步该怎么选

双击安装程序后,首先看到的是欢迎界面,直接下一步。接着是许可协议,勾选接受,继续。

关键步骤出现在组件选择页面。Qt 4.8.7 的离线包通常提供以下几类组件:

组件名称是否必选说明
Qt Libraries必选Qt 核心库、GUI 库、网络库等,不装这个等于没装
Qt Creator建议选官方 IDE,版本较老但够用,也可以后续单独装新版
MinGW必选编译器工具链,不装无法编译
Examples and Demos可选示例代码,学习时有用,但占空间
Source Code可选Qt 源码,需要调试进 Qt 内部时才装
Documentation可选离线文档,查 API 方便,但体积不小

我的选择是:Qt Libraries + MinGW + Qt Creator 必装,Examples 装上方便参考,Source Code 和 Documentation 暂时不装,需要时再补。这样安装体积控制在 1.2GB 左右,速度也快一些。

接下来是安装路径选择。我填的是D:\Qt\4.8.7,注意这个路径下会直接放 bin、lib、include 等目录,不要再套一层。有些人习惯写成D:\Qt\4.8.7\qt,结果环境变量配起来多一层,容易出错。

3.2 安装过程中的等待与异常处理

点击安装后,进度条会走一段时间,大概 10 到 20 分钟,取决于磁盘速度。这个阶段最容易出的问题是卡在某个百分比不动。我遇到过一次卡在 47% 左右,等了五分钟没反应,打开任务管理器发现安装程序 CPU 占用为 0,判断是假死。解决办法是结束进程,清理掉安装目录里已释放的文件,重新运行安装程序。第二次把杀毒软件实时防护关掉后,顺利走完。

另一个常见现象是安装快结束时弹出“无法注册文件类型”之类的警告。这通常是因为系统里已经有关联的 Qt 版本,或者权限不足。如果只是警告不是错误,可以忽略,不影响核心功能。但如果弹出的是“无法写入文件”的错误,那就要检查目标目录的权限,确保当前账户有完全控制权。

注意:安装完成后不要立即删除安装包。后续如果某个组件没装上,或者需要修复安装,还得靠这个包。建议把它放到一个固定的归档目录里。

3.3 环境变量的配置方法

安装程序通常会自动把 Qt 的 bin 目录和 MinGW 的 bin 目录加到系统 PATH 里,但有时候不会,或者加的顺序不对。我习惯手动检查一遍。

需要加入 PATH 的路径有两个:

  • D:\Qt\4.8.7\bin—— 这里面是 Qt 的动态库和工具,比如qmake.exe、designer.exe。
  • D:\Qt\4.8.7\mingw\bin—— 这里面是 MinGW 的编译器,比如gcc.exe、g++.exe、mingw32-make.exe。

配置步骤:右键“此电脑” → 属性 → 高级系统设置 → 环境变量 → 在“系统变量”里找到 Path → 编辑 → 新建两条,把上面两个路径加进去。注意顺序,MinGW 的 bin 最好放在 Qt 的 bin 前面,避免系统里其他编译器干扰。

配完之后打开一个新的命令提示符窗口,输入以下命令验证:

qmake -v gcc --version mingw32-make --version

如果qmake -v输出的是QMake version 2.01a并且 Using Qt version 4.8.7,说明 Qt 环境就绪。gcc --version应该显示 4.4.0 或 4.8.2 之类的版本号。三条命令都正常,环境变量就算配好了。

4. 安装后的验证与第一个测试项目

4.1 用命令行验证工具链是否完整

环境变量配好后,我习惯在命令行里做一轮完整验证,而不是直接打开 IDE。因为 IDE 可能会用自己的配置覆盖环境变量,先确认底层工具链没问题,能排除很多干扰。

先建一个临时目录,比如D:\test_qt,在里面写一个最简单的 Qt 程序:

#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("Qt 4.8.7 works!"); label.show(); return app.exec(); }

保存为main.cpp。然后在这个目录下执行:

qmake -project qmake mingw32-make

第一条命令生成.pro文件,第二条生成 Makefile,第三条开始编译。如果一切顺利,会在debug或release子目录下生成test_qt.exe。双击运行,能看到一个显示“Qt 4.8.7 works!”的小窗口,说明整个工具链完全打通。

这个过程里我遇到过两个问题。一个是qmake -project生成的.pro文件里没有自动加上QT += widgets,因为 Qt 4 里QLabel属于 QtGui 模块,不是独立的 Widgets 模块。如果编译报错说找不到QLabel,在.pro文件里加一行QT += gui即可。另一个问题是mingw32-make命令找不到,这是因为 MinGW 的 bin 目录没加到 PATH 里,回头检查环境变量就能解决。

4.2 在 Qt Creator 里跑通第一个项目

命令行验证通过后,打开 Qt Creator。第一次启动会要求配置工具链,正常情况下它会自动检测到已安装的 Qt 版本和 MinGW 编译器。在“工具” → “选项” → “构建和运行”里,应该能看到一个自动检测的 Kit,名字类似“Desktop Qt 4.8.7 MinGW”。

如果没检测到,手动添加:在“Qt 版本”标签页里点“添加”,选择D:\Qt\4.8.7\bin\qmake.exe;在“编译器”标签页里确认 MinGW 的 g++ 路径正确;然后在“构建套件”里把 Qt 版本和编译器组合起来,起个名字保存。

新建一个 Qt Gui Application 项目,Qt Creator 会自动生成main.cpp、mainwindow.cpp、mainwindow.h和.pro文件。直接点左下角的绿色三角编译运行,如果弹出一个空窗口,说明 IDE 环境也没问题。

这里有个细节:Qt 4.8.7 配套的 Qt Creator 版本通常是 2.x 或 3.x,界面和现在的新版差别很大,快捷键和菜单布局也不一样。比如“构建”菜单里没有“重新构建”的显眼按钮,得在项目右键菜单里找。刚开始用会有点不顺手,但核心功能都在,写代码、调试、看输出都够用。

4.3 动态库依赖问题的处理

编译出来的 exe 如果直接拷到别的机器上运行,大概率会报“缺少 QtCore4.dll”或“缺少 QtGui4.dll”。这是因为 Qt 默认动态链接,运行时需要对应的 DLL 文件。

解决办法有两种。一种是把D:\Qt\4.8.7\bin下的相关 DLL 拷到 exe 同目录,需要哪些拷哪些,通常包括:

  • QtCore4.dll
  • QtGui4.dll
  • 如果用了网络模块,还要 QtNetwork4.dll
  • 如果用了 XML,还要 QtXml4.dll
  • MinGW 的运行时库:mingwm10.dll、libgcc_s_dw2-1.dll

另一种是静态编译,在.pro文件里加CONFIG += static,但这需要重新编译 Qt 静态库,过程比较长,不适合快速验证。我一般先用动态链接跑通,确认功能没问题后再考虑静态发布的事。

提示:可以用 Dependency Walker 这类工具查看 exe 依赖哪些 DLL,避免漏拷。不过这个工具本身也比较老,在新系统上跑可能需要兼容模式。

5. 常见问题排查与避坑经验汇总

5.1 安装与配置阶段的典型问题

这个阶段的问题大多和环境有关,我整理了一张速查表:

问题现象可能原因解决方法
安装程序双击没反应权限不足或兼容性问题右键以管理员身份运行,设置 Windows 7 兼容模式
安装卡在某个进度杀毒软件扫描或磁盘响应慢关闭实时防护,耐心等待,超过 10 分钟无变化则重装
qmake 命令找不到PATH 未配置或配置错误检查系统变量 Path 中是否包含 Qt 的 bin 目录
gcc 命令找不到MinGW 的 bin 未加入 PATH把D:\Qt\4.8.7\mingw\bin加到 Path 最前面
编译报错找不到 QLabelQt 4 中 QLabel 在 QtGui 模块在 .pro 文件中加QT += gui
链接报错 undefined reference库路径或模块配置不对检查 .pro 中的 QT 变量,确认所需模块已添加

5.2 编译与运行阶段的踩坑记录

有一个坑我印象很深:在 64 位 Windows 上编译 32 位 Qt 程序,某些情况下mingw32-make会报“内存不足”或“无法分配堆”的错误。这通常是因为 32 位进程的地址空间限制,加上 Makefile 并行编译时开了太多任务。解决办法是在mingw32-make后面加-j1,强制单线程编译,虽然慢一点但稳定。

另一个坑是关于中文路径的。即使安装路径是纯英文,如果项目源码放在带中文的目录下,qmake 生成 Makefile 时可能把路径写成乱码,导致编译失败。我的做法是项目目录也用纯英文,比如D:\projects\qt_legacy,彻底避开这个问题。

还有一个不太常见但很烦人的问题:Qt Creator 启动后界面字体极小或极大,这是因为老版本 Qt 对高 DPI 屏幕支持不好。可以在 Qt Creator 的快捷方式里加启动参数-stylesheet指定样式表,或者直接在系统显示设置里把缩放调回 100%。如果屏幕本身分辨率很高,建议外接一个普通显示器来用这套老环境,体验会好很多。

5.3 老版本环境的日常维护建议

Qt 4.8.7 这套环境装好之后,日常使用还有几个注意点。

第一,不要随意更新系统里的 MinGW 或其他 GCC 工具链。Qt 4.8.7 配套的 MinGW 版本很老,如果 PATH 里混入了新版 GCC,qmake 可能会调用错误的编译器,导致链接错误。我习惯在项目构建脚本里显式指定编译器路径,而不是依赖 PATH 的默认顺序。

第二,定期备份.pro文件和项目配置。老版本的 Qt Creator 有时候会在切换构建套件时丢失配置,尤其是手动添加的 Kit。把.pro.user文件也纳入版本管理,虽然它包含本地路径信息,但能省去重新配置的时间。

第三,如果项目需要长期维护,考虑把整个 Qt 安装目录打包成一个绿色版。Qt 4.8.7 的安装是自包含的,理论上把D:\Qt\4.8.7整个目录拷到另一台机器,再配好环境变量,就能直接使用。这样在新机器上部署环境只需要几分钟,比重新安装快得多。

6. 关于这套老环境的一些个人体会

装完 Qt 4.8.7 之后,我对着那个朴素的 Qt Creator 界面发了会儿呆。没有花哨的深色主题,没有智能补全的悬浮提示,连代码折叠都显得笨拙。但就是这套工具,在十几年前支撑起了大量桌面软件的开发,很多至今还在运行的行业软件就是用它编译出来的。

从技术角度看,Qt 4.8.7 的安装过程本身并不复杂,难点在于它太老了,老到很多当年理所当然的步骤,现在需要额外解释。比如为什么安装包不在官网首页,为什么需要设置兼容模式,为什么环境变量要手动检查。这些在当年都是常识,现在却成了需要记录下来的经验。

我个人在实际操作中的体会是:维护老项目时,环境搭建的时间投入是值得的。与其花几周去迁移代码,不如花半天把老环境跑通,然后在稳定的基础上做增量修改。Qt 4.8.7 虽然老,但它的核心 API 设计思想——信号槽、对象树、事件循环——和现在的新版本一脉相承。在这个环境里写代码,反而能更清楚地看到 Qt 框架最本质的东西。

最后分享一个小技巧:如果安装过程中反复失败,可以试试用虚拟机装一个干净的 Windows 7 系统,在里面装 Qt 4.8.7,成功率比在 Windows 10/11 上折腾兼容模式高得多。装好之后把虚拟机磁盘文件备份一份,以后随时可以恢复,比在物理机上反复重装省心。这个思路同样适用于其他老开发环境的搭建,算是一个通用的兜底方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询