qt 5.6.3版本编译方法

本文介绍了如何在2021年的环境下编译QT 5.6.3以支持Windows XP系统。关键点包括:缩短QT源码目录名以解决qwebp.lib编译问题;推荐使用VS2010编译以避免运行时问题;设置编译参数如CL=/D_USING_V140_SDK71_以启用XP工具集;并提供了完整的编译批处理脚本内容。

现在是2021年2月,我们的客户还有大约不到40%的机器还在使用windows xp系统,QT最后支持windows xp系统的版本是5.6.3,但是想要将编译出来的程序在windows xp里面成功跑起来还是要费一番功夫的。

先说几个重点吧,第一是一定要把QT源码的目录名称改短,否则qwebp.lib会无法编译生成(原因是什么vckg限制了路径字符长度,看这里https://bugreports.qt.io/browse/QTBUG-38210),但是很奇怪qwebpd.lib也就是debug版本的可以生成。第二是尽量使用vs2010进行编译,虽然2015,2019等都能编译成功,但是实际用的时候在xp下面还是有各种问题。

下面是路径过长无法编译libwebp的出错提示,编译alpha_processing_sse2.obj时失败了。

1.QT 5.6.3源码获取

https://download.qt.io/new_archive/qt/5.6/5.6.3/   找到single目录内的zip格式压缩包下载使用。

2.修改静态编译参数

修改qtbase\mkspec\common\msvc-desktop.conf文件,修改里面的

QMAKE_CFLAGS_RELEASE    = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MDd

改为

QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MTd

3.编译icu,openssl,我之前的博客里面写过,不再赘述。注意支持xp的版本问题icu 49.1.2,openssl 1.02u可以,高了不行。

4.最重要的一个环节,指定编译参数

  我这里是使用vs2010在windows 7系统下面编译的,需要注意几个特殊的编译参数,第一个是CL参数,如下

set PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
set LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%LIB%
#set CL=/D_USING_V140_SDK71_

CL=/D_USING_V140_SDK71_的意思是让vc2015使用xp工具集,需要在编译前确定本机安装了xp工具集。我之前尝试使用vs2015编译时配置的参数,后期使用vs2010编译就可以不要了。

第二个重要的参数是-target xp,我的完整编译批处理脚本内容如下:

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
set OPENSSL_DIR=D:\cpp_tools\OpenSSL-1.0.2u-Static-XP\OpenSSL
set PATH=%PATH%;C:\icu\dist\bin; 
set INCLUDE=%INCLUDE%;C:\icu\dist\include;D:\cpp_tools\OpenSSL-1.0.2u-Static-XP\OpenSSL\include;
set LIB=%LIB%;C:\icu\dist\bin;D:\cpp_tools\OpenSSL-1.0.2u-Static-XP\OpenSSL\lib;
set LIBPATH=%LIBPATH%;C:\icu\dist\lib;D:\cpp_tools\OpenSSL-1.0.2u-Static-XP\OpenSSL\lib;

set libs.icu=-lsicudtd -lsicuind -lsicuucd -lAdvapi32
set  ICU_PREFIX=C:\icu\dist

SET QMAKESPEC=win32-msvc2010

set PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
set LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%LIB%
#set CL=/D_USING_V140_SDK71_

configure.bat -prefix "d:\qt\qt5_6_3_msvc_x86" -confirm-license -opensource  -debug-and-release -static -static-runtime -target xp -platform win32-msvc2010 -nomake examples -nomake tests  -plugin-sql-sqlite -plugin-sql-odbc  -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp -I D:\cpp_tools\OpenSSL-1.0.2u-Static-XP\OpenSSL\include -L D:\cpp_tools\OpenSSL-1.0.2u-Static-XP\OpenSSL\lib -openssl -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32 -lgdi32" -icu  -I C:\icu\dist\include -L C:\icu\dist\lib 

jom /nmake

都编译完以后,在qt creator里面新建新项目,打开项目的pro工程文件,添加如下编译参数:

win32 {
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE,5.01

DEFINES += _ATL_XP_TARGETING
QMAKE_CFLAGS += /D_USING_V140_SDK71_
QMAKE_CXXFLAGS += /D_USING_V140_SDK71_
LIBS += -L$$quote(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib)
INCLUDEPATH += $$quote(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include)
}

 

### 编译 Qt 5.6.3 源码指南 #### 准备工作 为了成功编译 Qt 5.6.3 的源代码,需要准备合适的开发环境。这通常意味着安装必要的依赖项以及配置好工具链。 对于 Linux 用户来说,可以使用包管理器来安装这些依赖项。例如,在基于 Debian 或 Ubuntu 的系统上,可以通过以下命令安装所需的软件包: ```bash sudo apt-get update && sudo apt-get install -y \ build-essential \ libgl1-mesa-dev \ libxkbcommon-x11-0 \ libxcb-icccm4 \ libxcb-image0 \ libxcb-keysyms1 \ libxcb-render-util0 \ libxcb-shape0 \ libxcb-sync1 \ libxcb-xfixes0 \ libxcb-xinerama0 \ perl ``` #### 下载并解压源码 下载官方发布的 Qt 5.6.3 版本压缩文件,并将其解压缩到指定位置。可以从 Qt 官方网站获取该版本的 tarball 文件[^1]。 #### 配置编译选项 进入解压后的目录,运行 `configure` 脚本来设置编译参数。可以根据具体需求调整配置选项,比如是否启用特定模块或功能特性。下面是一个基本的例子: ```bash ./configure -prefix /opt/qt5.6.3 -opensource -confirm-license -nomake examples -nomake tests ``` 这里 `-prefix` 参数指定了安装路径;`-opensource` 和 `-confirm-license` 表明接受开源协议;而最后两个参数则跳过了示例程序和测试套件的构建过程以加快速度。 #### 开始编译 完成上述准备工作之后就可以执行实际的编译操作了。考虑到整个项目规模较大,建议增加并发作业数以充分利用多核处理器性能: ```bash make -j$(nproc) ``` 此命令会根据当前系统的 CPU 数量自动决定最佳的工作线程数目来进行并行编译。 #### 安装结果 当所有目标都已成功链接完毕后,即可通过如下指令将生成的目标文件复制至之前定义好的前缀目录下: ```bash sudo make install ``` 这样就完成了 Qt 5.6.3 的本地化部署流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peihexian

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值