提问者:小点点

什么是libc?它包括哪些功能?我们如何获取它的源代码?


根据维基百科,有许多基于操作系统和编译器的标准C库变体。参考:http://en.wikipedia.org/wiki/C_standard_library

>

  • 但是我想了解在不同的头文件中声明的大量函数(例如:stdio. h、string.h、stdlib.h等)是如何在单个库中定义的。所有这些头文件的源代码文件是相同的,还是stdio.h、string.h等有不同的库?由于我是编程初学者,我不知道多个源代码文件是否可以生成像可执行文件这样的单个库。如果可能的话,我可以理解libc包含所有标准头文件的定义。我在哪里可以看到标准C库的源代码?

    它是静态库还是动态库?如果两个版本都存在于我的环境(OS/IDE)中,当我在源代码中包含任何标准头文件时,哪个版本会被链接。它IDE依赖吗?但是在gcc的情况下,程序员不会显式包含libc。

    libc是标准C库的标准名称吗?

    在windows操作系统/环境中,它是否已经存在?如果存在,它的名称是什么(仅限libc)?

    还有其他像libm这样的标准C库吗?


  • 共1个答案

    匿名用户

    >

  • 一般来说,头文件(. h)包含函数和变量的声明。实现文件(.c)包含声明函数的实际实现。由于可以将多个实现文件翻译并链接到单个库二进制文件中,因此您可以拥有一个具有多个头文件的库。许多C库实现都是开源的,您可以在它们的相对项目页面上查看它们的源代码。GNU libc和RedHat newlib是最突出的。我相信人们会在评论中添加更多内容。

    实现定义。您可以将完全相同的源代码转换为静态或动态库。在系统上安装这两个版本并不少见。由于几乎每个可执行文件都需要libc,因此它通常默认添加到链接器输入中,因此您不必将-lc添加到每个命令行。

    不。标准C库的标准名称是标准C库。请注意,实际上标准库的所有实现都使用非标准函数扩展了库。这些仍然是非标准的,即使它们是标准库的一部分。(alloca()浮现在脑海中。)

    如果我没记错的话,MSVCRT. dll之类的。

    libm代表标准库的数学部分,默认情况下不添加到链接器输入中,因为很少需要它。只有一个标准C库,由ISO/IEC 9899语言标准描述的库(因此得名)。还有许多其他库可以很容易地被假定为存在于给定系统上,但只有ISO/IEC文档中描述的是“标准”。