使用MingW-w64 编译 64bit Qt5

现在Qt官方提供的mingw编译器的预编译版本都是32bit的,如果想使用64bit的话需要自己手动进行编译。

自己编译的话只需要下载mingw-w64编译器和Qt的源码,之前在官方Wiki上看到还需要Perl,实际测试发现没有Perl也可以正常编译。

mingw-w64直接去mingw-w64官网下载就可以了,选择MingW-W64-builds下载。安装时记得架构记得选择x86_64,版本的话选择最新的就可以了,我编译时使用的是8.1.0没有问题。

Qt源码的话也去Qt官网下载,5.9.6版本的下载地址为http://download.qt.io/archive/qt/5.9/5.9.6/single/qt-everywhere-opensource-src-5.9.6.zip,其他版本的可以到http://download.qt.io/archive/qt/ 到对应目录下载,如果下载预编译版本不想注册的话也可以直接从这里下载安装包。

下载好Qt安装包后直接进行解压,解压完成后需要注意默认解压出的路径比较长比如E:\qt-everywhere-opensource-src-5.9.6\qt-everywhere-opensource-src-5.9.6,mingw存在bug,太长的路径编译会报错,找不到相应的头文件’ No such file or directory #include “… qfreetypefontdatabase_p.h”‘。

解压完成后,在源文件夹目录新建以下bat脚本,QtPrefixDir为执行make install命令时安装的目录、MingwDir为安装的mingw-w64的路径。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
@echo off

rem CONFIGURE BEFORE RUN SCRIPT!!==

set QtSrcDir=%CD%

set QtPrefixDir=C:\Qt\5.9.1-x64

set MingwDir=C:\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64<br>
set BuildType=-debug-and-release

set QtSPEC=win32-g++

set LANG = en

rem =======================================================================

PATH = %MingwDir%\bin;%MingwDir%\opt\bin;%SystemRoot%\system32;%SystemRoot%

set QT_INSTALL_PREFIX = %QtStaticDir%

set OldDir=%CD%

cd %QtSrcDir%

cmd /C "configure.bat -shared %BuildType% -platform %QtSPEC% -prefix %QtPrefixDir% -opensource -confirm-license -c++std c++14 -nomake examples -skip wayland -skip purchasing -skip serialbus -skip qtserialport -skip script -skip scxml -skip speech -skip location -no-opengl -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -no-openssl"

if ERRORLEVEL 1 goto :error

mingw32-make -r -k -s -j4

if ERRORLEVEL 1 goto :error

mingw32-make -k install

if ERRORLEVEL 1 goto :error

set FILE_TO_PATCH=%QtPrefixDir%\mkspecs\win32-g++\qmake.conf

echo.>>%FILE_TO_PATCH%

echo CONFIG += static>>%FILE_TO_PATCH%

echo BUILT!

goto exitX

:error

echo ERROR!

:exitX

pause

cd %OldDir%

以上的编译的是动态链接库,如果要静态链接库的话可以用下面的脚本。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47
@echo off

rem CONFIGURE BEFORE RUN SCRIPT!!==

set QtSrcDir=%CD%\qt-everywhere-opensource-src-5.9.1

set QtPrefixDir=C:\Qt\5.9.1-x64-static

set MingwDir=C:\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64<br>
set BuildType=-release

set QtSPEC=win32-g++

set LANG = en

rem =======================================================================

PATH = %MingwDir%\bin;%MingwDir%\opt\bin;%SystemRoot%\system32;%SystemRoot%

set FILE_TO_PATCH=%QtSrcDir%\qtbase\mkspecs\win32-g++\qmake.conf

echo %FILE_TO_PATCH%

if exist %FILE_TO_PATCH%.patched goto skipPatch

type %FILE_TO_PATCH%>%FILE_TO_PATCH%.patched

echo.>>%FILE_TO_PATCH%

echo QMAKE_LFLAGS += -static -static-libgcc>>%FILE_TO_PATCH%

echo QMAKE_CFLAGS_RELEASE -= -O2>>%FILE_TO_PATCH%

echo QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer>>%FILE_TO_PATCH%

echo DEFINES += QT_STATIC_BUILD>>%FILE_TO_PATCH%

:skipPatch

set QT_INSTALL_PREFIX = %QtStaticDir%

set OldDir=%CD%

cd %QtSrcDir%

cmd /C "configure.bat -shared %BuildType% -platform %QtSPEC% -prefix %QtPrefixDir% -opensource -confirm-license -c++std c++14 -nomake examples -skip wayland -skip purchasing -skip serialbus -skip qtserialport -skip script -skip scxml -skip speech -skip location -no-opengl -qt-zlib -qt-pcre -qt-libpng -no-libjpeg -qt-freetype -no-openssl"

if ERRORLEVEL 1 goto :error

mingw32-make -r -k -s -j4

if ERRORLEVEL 1 goto :error

mingw32-make -k install

if ERRORLEVEL 1 goto :error

set FILE_TO_PATCH=%QtPrefixDir%\mkspecs\win32-g++\qmake.conf

echo.>>%FILE_TO_PATCH%

echo CONFIG += static>>%FILE_TO_PATCH%

echo BUILT!

goto exitX

:error

echo ERROR!

:exitX

pause

cd %OldDir%

参考资料:

https://wohlsoft.ru/pgewiki/Building_Qt_on_MinGW-w64

https://bugreports.qt.io/browse/QTBUG-64298

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864467.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20241307《计算机基础与程序设计》课程总结

目录 第一节 第二节 教材学习内容总结 C语言程序设计第十三章和第十四章的总结: 第十三章:文件操作文件的打开与关闭 • 使用fopen()函数打开文件,它接受文件名和模式作为参数,返回一个FILE指针。 • fclose()函数用于关闭文件,释放资源。 文件的读取 • fgetc()和getc…

错误记录:[Synth 8-6895] The reference checkpoint

报错详情点击查看代码 [Synth 8-6895] The reference checkpoint E:/Projects/Vivado2023/2.ExampleDesign_my/iic_ms/iic_ms.srcs/utils_1/imports/synth_1/Master.dcp is not suitable for use with incremental synthesis for this design. Please regenerate the checkpoin…

4 跨音速

可以的话请点个赞吧,欧内盖,如果没有大伙支持的话,瓦达西!4 跨音速 基本 升力的基本计算公式为:\(L=\frac{1}{2}\rho_{\infty}V_{\infty}^{2}Sc_{l}\) 对于二维翼型升力系数\(c_l\)而言,它直接和机翼截面几何结构相关,即随翼型弯度增大、厚度-弦长比增大而增大。 ‍ ​​…

CPU负载均衡之WALT

前言 本文继续整理CPU调度WALT相关内容,主要整理如下内容:WALT是什么? WALT 计算? WALT 计算数据如何使用?1. WALT是什么? WALT:Windows-Assist Load Tracing的缩写:从字面意思来看,是以window作为辅助项来跟踪CPU LOAD; 实质上是一种计算方法,用数据来表现CPU当前的…

[ Netty ] 通过Netty聊天业务来加深理解Netty运行以及网络编程.

引言这几天在学习Netty网络编程的过程当中对Netty的运作原理及流程有一定的了解,通过Netty实现聊天业务来加深对Netty的理解.这里用一张图概括运行流程这里我在Github上面找到一位大神总结的尚硅谷的学习笔记,里面有写Netty的运作原理(但是因为前面一直在讲原理我自己身原因容易…

输出下列图形

题目很简单但也算是复习知识点,有三种做法,第一种是直接printf,第二种是循环语句,第三种是调用函数。printf省略 for循环: ① ②调用函数:

动手深度学习-PyTorch(第二版)PDF、EPUB免费下载

李沐,动手深度学习,中文第二版,2023年8月18日。本书是《动手学深度学习》的重磅升级版本,选用经典的PyTorch深度学习框架,旨在向读者交付更为便捷的有关深度学习的交互式学习体验。 本书重新修订《动手学深度学习》的所有内容,并针对技术的发展,新增注意力机制、预训练等…

Python数据结构与算法分析 第3版PDF、EPUB免费下载

只有洞彻数据结构与算法,才能真正精通Python!热门计算机科学教材,华盛顿大学、北京大学等多家高校采用,让你在代码编写的战场上所向披靡!适读人群 :1. 希望学习数据结构和算法的Python用户; 2. 计算机专业的学生和老师。 只有洞彻数据结构与算法,才能真正精通Python!热…

《计算机组成及汇编语言原理》读后感

一、 为什么选择这本书? 这本书来自于:https://github.com/codefollower/My-Blog/issues/1。工作之后,个人一直追求的一个方面就是“系统化”,笼统的来说就是从以下两方面进行系统化:“基础”+“专业”。这本书属于基础方面的深化,通过 Java 虚拟机来讲计算机组成。 二、…

Effective Java中文版(原书第3版)PDF、EPUB免费下载

Jolt获奖作品全新升级,与《Java编程思想》和《Java核心技术》齐名,针对Java7、8、9全面更新Effective Java中文版(原书第3版)PDF、EPUB免费下载 适读人群 :本书并非面向Java初学者,而是要求读者有一定的Java编程经验。对于在Java开发方面已经积累一定经验的读者而言,本书…

2024-2025-1 20241301 《计算机基础与程序设计》第十五周学习总结

|这个作业属于哪个课程|2024-2025-1-计算机基础与程序设计| |这个作业要求在哪里|2024-2025-1计算机基础与程序设计第一周作业| |这个作业的目标|<复习知识,巩固基础>| |作业正文|https://www.cnblogs.com/HonJo/p/18653443| 一、教材学习内容 (一)《计算机科学概论》…

剖析Vue2内部运行机制

Vue.js 运行机制全局概览 全局概览 这一节笔者将为大家介绍一下 Vue.js 内部的整个流程,希望能让大家对全局有一个整体的印象,然后我们再来逐个模块进行讲解。从来没有了解过 Vue.js 实现的同学可能会对一些内容感到疑惑,这是很正常的,这一节的目的主要是为了让大家对整个流…