我们知道编译器通常由三部分组成:前端、中间表示(优化器)、后端
我对mingw的理解:
mingw使用了gcc的编译器前端和IR优化
mingw后端生成符合COFF规范的obj文件,而传统gcc在Linux平台上生成符合elf规范的.o文件
我的理解正确吗?
我google了很多关于mingw的信息,但是关于编译器前端、优化器、后端的信息很少
MinGW - 及其更新的分支 MinGW-w64 - 更像是 C/C++ 标准库的替代品。它们提供了 Windows 原生标准库的大部分内容(例如用于其他平台的 newlib)。
MinGW 这个名字有时用来指代整个工具包,但基本上它是带有 MinGW(-w64) 标准库的针对本机 Windows 的 GCC。
Windows 二进制文件(
.exe
和 .dll
文件)是 PE 文件(或 64 位 Windows 的 PE+),基于 COFF 文件格式。
请注意,除了 GCC(例如 https://winlibs.com/)之外,还有一个基于 LLVM 的 MinGW-w64 工具包(https://github.com/mstorsjo/llvm-mingw/releases)。