前言
- 编译环境:Win10 21H2 X64 | MinGW64编译器
- 所用源码:qt-everywhere-src-5.15.3
- 其他相关:参考教程 QT源镜像
Qt Modules:可以直接进入QT源码目录,排除coin,gnuwin32,qtbase后其余目录都这样
-skip 目录名
跳过Qt Features:可以通过
configure --list-features
来查看功能列表后使用-no-feature-<feature>
来关闭相关功能Qt Parts:想用Qt自带的第三方库可用通过
-qt-库名
配置。想用系统中的第三方库可用通过-system-库名
配置。不用对应库时使用-no-库名
去除。例如:-qt-libpng -system-xcb -no-zlib
这几个选项添加后编译会报错:
-no-feature-accessibility -no-feature-itemmodel -no-pcre -no-doubleconversion
编译
1 | # 设置MinGW的开发环境 |
测试
- 在目录Test中新建如下内容文件
HelloWorld.cpp
1 |
|
- 使用命令提示符进入目录Test中
1 | set PATH=D:\QT5\Tools\mingw810_64\bin;D:\QT5\Tools\Qt5.15.3_MinGW8.1_x64_Static\bin;%PATH% |
最后执行
Test\release\HelloWorld.exe
可打开生成的QT程序如果软件使用MinGW静态编译后如果还是需要 libgcc_s_xxx.dll 等库,将如下文件修改或添加两行参数即可解决:
1 | # QT源码编译前:将这个文件添加如下两行: |
其它
MinGW里没有
ldd
工具,因为Windows不使用.so
共享库文件。如果要查看Windows里可执行文件的依赖库,需要使用微软自家的Dependency Walker
工具。MinGW可以通过dlltool
来生成用于创建和使用动态链接库需要的文件,如 .def 和 .lib。
Linux/Unix 系统里静态库扩展名一般是 .a,动态库扩展名一般是 .so 。Windows 系统里用的静态库扩展名一般是 .lib,动态库扩展名一般是 .dll 。
MinGW比较特殊,是将GNU工具集和链接库从Linux/Unix系统移植到Windows里,所以使用的静态库扩展名为
.a
,而其动态库扩展名则为.dll
,.a
仅在生成目标程序过程中使用,.dll
则是在目标程序运行时使用。