根据维基百科https://en.wikipedia.org/wiki/GNU_C_Library, GNU C Library是GNU Project的the C standard library实现。但它也有不属于C标准库的扩展。
当我开始阅读Kerrisk的APUE和Linux编程接口时,在我看来,示例中使用的头文件来自GNU C库。它是否正确?如果是,可以将GNU C库视为与POSIX兼容的OS的编程接口,例如Linux的编程接口吗?
GNU C库的范围是否大于POSIX,例如,通常不被视为操作系统编程接口一部分的主题?如果是,那么我可能会将GNU C库视为C库,因为它不仅仅是关于OS编程接口。例如,GNU C Library中的以下主题是OS编程接口的一部分:
感谢。
答案 0 :(得分:3)
POSIX兼容的OS编程接口还是只是一个C库?
有什么区别? POSIX根据C库描述系统接口。它描述了C头的内容,它包含C语言中的函数,宏和类型声明。
POSIX平台可以直接用C语言编程,如POSIX所述,而C ++则具有很高的C兼容性;对于其他语言,您需要特殊的绑定。
GNU C库的许多功能都是由POSIX一致性驱动的。没有用户空间组件的Linux内核不符合POSIX。但是,GNU C库中的许多功能都需要内核支持。如果没有内核支持,它们要么根本不能完成,要么不能以符合POSIX的方式完成。
答案 1 :(得分:1)
当我开始阅读Kerrisk的APUE和Linux编程接口时,在我看来,示例中使用的头文件来自GNU C库。这是对的吗?
如果这些书籍包含来自第三方头文件的代码,无论是GNU还是其他人,那么他们应该将其归因于相应的来源。看看他们说什么。如果他们确实提供了第三方标头代码,那么GNU C库很可能是源代码,但Linux发行版可以提供不同的C库,有些则可以。
GNU C库是兼容POSIX的OS编程接口还是C库的实现?
在我看来,GNU C库自己的文档将是比Wikipedia更好的信息来源,或者您自己对其标题的分析。那些文档claim that the GNU C library is compliant with ISO/IEC 9945-1:1996,a.k.a。POSIX.1。
答案 2 :(得分:1)
GNU C库远不是标准的C库。 除了ISO C之外,它还实现了introduction part of its documentation中描述的其他几个标准(包括几个POSIX标准)。
您从glibc获得的确切功能集是通过feature test macros控制的。
有关该库的详细文档,请参阅https://www.gnu.org/software/libc/manual/html_mono/libc.html。