MinGW 是如何将 GCC 移植到 Windows 的?

问题描述 投票:0回答:1

我试图了解 MinGW 如何将 GCC 移植到 Windows。我知道 GCC 起源于 Unix 世界,由于多种原因,它不能简单地作为可执行文件复制到 Windows,也不能使用 Windows 提供的本机工具链从源代码构建。这是因为 Unix 和 Windows 之间的程序创建和执行不同。

具体来说,我了解 GCC 需要通过在预期位置找到的运行时库与操作系统进行交互。假设这些库的模拟是 Windows 上的 DLL,那么 GCC 必须以某种方式链接这些 DLL。

以 GCC 作为具体示例,我想知道:MinGW 在 GCC 源代码中进行了哪些更改并构建以将其移植到 Windows?

我查看了 MinGW-w64 源代码,但它超出了我的理解范围。我还尝试阅读 MinGW 和 MinGW-w64 的维基百科页面,以了解它们的背景和目标。但我还是觉得我没有回答我的问题。

windows gcc mingw mingw-w64 porting
1个回答
0
投票

GCC 已经支持 Windows 使用的架构。

但是必须重写标准库才能支持 Windows。

就像newlib是支持嵌入式系统的标准库的替代品一样,MinGW/MinGW-w64本质上是使用本机Windows API调用来替代标准库。

但远不止于此,GCC(以及 binutils 和 gdb 等其他工具)也必须进行一些更改才能支持 Windows 平台。这包括 Windows 特定的可执行文件二进制文件格式(

.exe
文件)和使用 PE/PE+ 格式(基于 COFF 格式)的共享库(
.dll
文件)。

请注意,MinGW-w64 并不专门链接到 GCC,因为 LLVM 也可以与 MinGW-w64 一起使用(请参阅此处)。

© www.soinside.com 2019 - 2024. All rights reserved.