关于c库的一些疑义

关于c库的一些疑问
[b][b]看完C Primer Plus第16章的c库介绍,我还是有些概念性的问题没弄明白。
1.c库还有什么别称吗?我在网上只搜得到函数库、标准库之类的,并没有关于c库的介绍。
2.c库的定义是什么,是一个包含函数定义的文件,还是包含很多函数的文件的总称?
3.c库一般是保存在系统的什么位置?跟lib文件和dll文件是什么关系?
4.头文件里只有声明吧,那是编译器是如何把包含函数定义的文件和源文件结合起来的?
5.为什么stdio.h里的函数不用#include也可以编译成功?
6.书中的“在程序编译或链接的某些阶段,您可能需要指定库选项”是什么意思?这个步骤不应该是编译器完成的吗?我需要“显示的指定这些库”吗?
希望有大神能够指点一下,O(∩_∩)O谢谢
------解决思路----------------------
C标准中定义的一些函数,比如printf,fopen这些库函数,写代码时直接调用就可以了,但是它们的实现是由各个编译器作者们提供的。比如在Windows,你用vs写C代码,最终代码在链接阶段需要把msvcrt(msvcrt.dll)引用到生成的可执行文件中,程序在执行的时候遇到printf就自动进入msvcrt.dll中完成相应功能,这个msvcrt.dll就是Microsoft提供的。Linux系统中的实现是glibc,编程过程中需要libc.so。
------解决思路----------------------
1. c库指c语言可以用的库
2. c库里面没有函数定义, 而是已经翻译好的电脑能看懂的语言.
3. c库保存的位置与编译器有关, 是lib还是dll也与编译器有关.
4. 没错只有声明, 声明是给编译器看的, 编译后还有链接过程, 链接时, 就必须确保有定义了.
5. 因为stdio中的只是声明, 可以手工写出来,
6. 某个阶段就是链接阶段, 有些库是默认链接的, 所以不用显式地指定. 而有些需要显式指定.
------解决思路----------------------
1. 标准里只有一章 Library 介绍所有的库函数,并没有给这个库起名字。C库应该是来源与"C 语言的库"。
2. C 标准里 Library 一章介绍的 C 语言中应该包含的头文件,头文件中应该定义的函数、宏、常量、变量等,并详细说明了所有这些符号的含义和功能。这可能就是所谓的 C 库吧。
3. C 库既然是 C 语言的库,那个就只有 C 语言才会需要。鉴于系统里很多程序是用 C 语言写的,所以在系统中可能也可以找到。
   对一个已经编译好的 C 程序来说,它可以将(它所用到的) C 库完全包含在自己的可执行文件中,这是你是看不到独立的 C 库的。当然它也可以动态链接库的形式依赖一个 C 库的 dll 。这个 dll 可能在系统目录,也可能在其它目录,只要程序运行时可以找到(如何找需要参阅 Windows 的文档)。由于不同的程序可能去不同的地方找,从而系统中也可能存在多个(可能相同也可能不同的)C 库。
  至于 lib ,那是 C 语言编译需要的。lib 里存放的是已编译好 C 库,在 C 编译器遇到 C 库中的内容的时候,可以直接引用。
4. 靠名字。
  上面说了,lib 里有已经编译好的 C 库。当你调用一个库函数的时候,编译器会去 lib 通过名字查找这个函数(这一步称作链接)。当你的程序包含几个源文件的时候,不同源文件中的函数调用也是这样通过名字查找的。
5. 老的 C 标准(C89)不要求在调用函数之前事先声明。新标准(C99)要求声明。但是并不是所有的C编译器都会按照新标准强制要求声明。所以现在你可能依然可以不经声明调用一个函数(比如不包含 stdio.h ,调用 stdio.h 中的函数)。
6. 这个,可能包括库的位置,你要链接那些库,等等。这里的库不一定只包含 C 库,还可以有其它库。只有 C 库的话,通常不用,编译器就搞定了。具体的要查询编译器文档。