【发布时间】:2018-10-31 17:40:49
【问题描述】:
我最近阅读了大量关于 glibc 函数如何在 linux 中包装系统调用的文章。然而,我想知道 glibc 和 GNU C 编译器之间的关系。
例如,我想编写自己的 C 标准实现并编写一个名为“newglibc”的新库,然后我稍微改变一下。例如,我在系统调用之前和之后进行了更多检查和操作。我必须编写一个新的编译器吗?或者我可以使用相同的 GNU gcc 编译器吗?
如果编译器与库完全分离,那么理论上有人可以在 Windows 系统上使用 gcc,如果他们可以将其转换为 .exe 并提供 Windows 提供的标准 C 库吗?
谢谢
【问题讨论】:
-
您可以使用相同的编译器。有一个开关
-nostdlib可以关闭到 glibc 的默认链接。已经有多种不同的标准库实现可用并在生产中使用 -
Glibc 不仅仅是一个“标准 C 库”。正如您所提到的,它还处理“系统调用”,这些函数不是 C 标准的一部分。此外,C 标准库的某些部分不在 glibc 中,而是在 GCC 特定库中。
-
你的第二个问题不清楚,已经有 gcc 到 windows 的端口(不使用 glibc,因为 glibc 开发人员不希望支持 windows)
-
@M.M 你指的是cygwin吗?
-
或MinGW。可能还有其他端口。
标签: c winapi compiler-construction glibc