Qt自带mingw使用

作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

参考

MinGW 编译libevent
MinGW怎么安装pthread库呢
Libev on Windows

命令行中使用

安装Qt的时候,安装了mingw,所以就不单独安装了,
在这里插入图片描述
将这个路径添加到Path,
在这里插入图片描述

msys

使用mingw-get-setup.exe安装msys,修改C:\MinGW\msys\1.0\etc\fstab,注意路径的斜杠,msys不需要配置环境变量

# Win32_Path				Mount_Point
#-------------------------------------	-----------
#C:/MinGW				/mingw
C:/Qt/Qt5.9.8/Tools/mingw530_32				/mingw

测试,ls命令并没有把mount目录显示出来,但是gcc已经可以使用了,

zc@DESKTOP-KVKC06A ~$ ls /
bin  etc  home  m.ico  msys.bat  msys.ico  postinstall  sbin  share
zc@DESKTOP-KVKC06A ~$ mount
C:\Qt\Qt5.9.8\Tools\mingw530_32 on /mingw type user (binmode)
C:\Users\zc\AppData\Local\Temp on /tmp type user (binmode,noumount)
C:\MinGW\msys\1.0 on /usr type user (binmode,noumount)
C:\MinGW\msys\1.0 on / type user (binmode,noumount)
c: on /c type user (binmode,noumount)
d: on /d type user (binmode,noumount)
e: on /e type user (binmode,noumount)
z: on /z type user (binmode,noumount)
zc@DESKTOP-KVKC06A ~$ cd /mingw/
bin/              etc/              include/          libexec/          opt/
build-info.txt    i686-w64-mingw32/ lib/              licenses/         share/
zc@DESKTOP-KVKC06A ~$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\Qt\Qt5.9.8\Tools\mingw530_32\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/Qt/Qt5.9.8/Tools/mingw530_32/bin/../libexec/gcc/i686-w64-mingw32/5.3.0/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-5.3.0/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw530/i686-530-posix-dwarf-rt_v4-rev0/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw530/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw530/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw530/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw530/prerequisites/i686-w64-mingw32-static --with-pkgversion='i686-posix-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw530/i686-530-posix-dwarf-rt_v4-rev0/mingw32/opt/include -I/c/mingw530/prerequisites/i686-zlib-static/include -I/c/mingw530/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw530/i686-530-posix-dwarf-rt_v4-rev0/mingw32/opt/include -I/c/mingw530/prerequisites/i686-zlib-static/include -I/c/mingw530/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw530/i686-530-posix-dwarf-rt_v4-rev0/mingw32/opt/lib -L/c/mingw530/prerequisites/i686-zlib-static/lib -L/c/mingw530/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 5.3.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)
<think>好的,我现在需要解决用户在QT使用MinGW编译器时遇到的缺少CRT库的问题。首先,我得理解问题所在。CRT库是C运行时库,MinGW在编译时需要这些库来链接程序。如果缺少的话,编译会失败,提示找不到某些函数或符号。 用户提到使用的是QTMinGW套件,可能安装不完整或者路径配置有问题。首先,我应该检查MinGW的安装是否完整。可能用户安装的是QT自带MinGW,但有些组件可能缺失。这时候需要建议用户重新安装或修复MinGW,确保包含完整的CRT库。 接下来,查看系统环境变量是否正确配置。有时候,即使安装了MinGW,如果路径没有正确添加到系统的PATH变量中,QT可能找不到相关的库文件。需要指导用户检查PATH中是否包含MinGW的bin目录,例如C:\Qt\Tools\mingw530_32\bin。 然后,检查QT的项目配置是否正确。用户可能在.pro文件中没有正确指定库的路径,或者链接参数有误。需要确认LIBS变量是否正确添加了所需的库路径,比如是否包含-L和-l参数。例如,LIBS += -L"C:/Qt/Tools/mingw530_32/lib" -lcrtdll这样的设置。 另外,用户提到的引用[3]中提到了附加依赖项的问题,可能需要考虑动态链接和静态库的选择。如果用户使用的是静态库,可能需要额外配置,而动态链接可能更简单。需要建议用户优先使用动态链接,避免复杂的依赖问题。 还有一种可能是系统缺少某些运行时组件,比如Visual C++ Redistributable,虽然MinGW通常不依赖这些,但也有可能某些混合编译的情况会出现问题。可以建议用户安装最新的VC运行库作为补充措施。 最后,如果以上方法都不奏效,可能需要重新安装整个QTMinGW环境,或者考虑使用其他编译器如MSVC,如引用[1]中提到的使用VS进行调试,可能更稳定。但用户可能希望继续使用MinGW,因此需要给出替代方案,比如更换MinGW版本或从官方源重新安装。 总结下来,解决方案应该分步骤指导用户检查安装、配置环境变量、调整项目设置,并考虑重装或更换编译器。同时,引用相关的参考资料来支持建议,比如引用[1]和[3]中的内容。</think>### QT MinGW 缺少CRT库的解决方案 当使用QTMinGW编译器时遇到缺少CRT(C Runtime Library)库的问题,可能是由于编译器环境配置不完整或路径错误导致。以下是逐步解决方案: --- #### **1. 检查MinGW安装完整性** - **问题原因**:QT自带MinGW套件可能未包含完整的CRT库,或安装过程中文件损坏。 - **解决方法**: 1. 重新安装MinGW编译器: - 从[MinGW官方源](https://sourceforge.net/projects/mingw/)下载完整包,或通过QT Maintenance Tool重新安装MinGW组件。 - 确保勾选`mingw32-base`、`mingw32-gcc-g++`和`msys-base`组件。 2. 验证安装路径: - 默认路径为`C:\Qt\Tools\mingw<版本号>\`,确认`bin`目录下存在`libgcc_s_dw2-1.dll`等关键CRT文件[^3]。 --- #### **2. 配置系统环境变量** - **问题原因**:系统未正确识别MinGW路径,导致编译器找不到库文件。 - **解决方法**: 1. 将MinGW的`bin`目录添加到系统`PATH`环境变量: - 例如:`C:\Qt\Tools\mingw730_64\bin`。 2. 重启QT Creator以应用环境变量变更。 --- #### **3. 调整QT项目配置** - **问题原因**:项目未正确链接CRT库或路径未声明。 - **解决方法**: 在`.pro`文件中添加以下配置: ```qmake # 指定库搜索路径 LIBS += -L$$PWD/../path/to/mingw/lib # 显式链接CRT库(如libgcc或libmingwex) LIBS += -lgcc -lmingwex ``` 若使用静态编译,需额外添加: ```qmake # 静态链接标志 QMAKE_LFLAGS += -static ``` --- #### **4. 修复或安装VC++运行库** - **问题原因**:部分MinGW版本依赖Windows系统组件(如`msvcrt.dll`)。 - **解决方法**: 1. 安装[Microsoft Visual C++ Redistributable](https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0)。 2. 从Windows SDK中提取缺失的CRT文件,并复制到`C:\Windows\System32`。 --- #### **5. 更换编译器或调试工具链** - **问题原因**:MinGW环境本身可能存在兼容性问题。 - **解决方法**: - 改用MSVC编译器(需安装Visual Studio)并配置QT的MSVC套件[^1]。 - 使用动态链接代替静态链接以减少依赖问题。 --- #### **验证是否解决** 编译时若仍报错`undefined reference to __imp_xxx`或`crt0_c.c: error: undefined reference to 'WinMain'`,需检查: 1. 编译器路径是否与QT Kits中的配置一致。 2. 项目是否混用了不同版本的库文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三遍猪

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值