企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
源文件通过编译可以生成目标文件(例如 GCC 下的 .o 和 Visual Studio 下的 .obj),并提供一个头文件向外暴露接口,除了保护版权,还可以将散乱的文件打包,便于发布和使用。 实际上我们一般不直接向用户提供目标文件,而是将多个相关的目标文件打包成一个静态链接库(Static Link Library),例如 Linux 下的 .a 和 Windows 下的 .lib。 打包静态库的过程很容易理解,就是将多个目标文件捆绑在一起形成一个新的文件,然后再加上一些索引,方便链接器找到,这和压缩文件的过程非常类似。 C语言在发布的时候已经将标准库打包到了静态库,并提供了相应的头文件,例如 stdio.h、stdlib.h、string.h 等。 Linux 一般将静态库和头文件放在`/lib`和`/user/lib`目录下,C语言标准库的名字是`libc.a`,大家可以通过`locate`命令来查找它的路径: ~~~ $ locate libc.a /usr/lib/x86_64-redhat-linux6E/lib64/libc.a $ locate stdio.h /usr/include/stdio.h /usr/include/bits/stdio.h /usr/include/c++/4.8.2/tr1/stdio.h /usr/lib/x86_64-redhat-linux6E/include/stdio.h /usr/lib/x86_64-redhat-linux6E/include/bits/stdio.h ~~~ 在 Windows 下,标准库由 IDE 携带,如果你使用的是 Visual Studio,那么在安装目录下的`\VC\include`文件夹中会看到很多头文件,包括我们常用的 stdio.h、stdlib.h 等;在`\VC\lib`文件夹中有很多 .lib 文件,这就是链接器要用到的静态库。 大家也可以在当前工程的属性面板(在工程名处单击鼠标右键选择“属性”)中查看路径: ![](https://box.kancloud.cn/d0cf5587297e75e57f45a4e17c8b0a29_722x265.png) ANSI C 标准共定义了 15 个头文件,称为“C标准库”,所有的编译器都必须支持,如何正确并熟练的使用这些标准库,可以反映出一个程序员的水平: ![](https://box.kancloud.cn/d3cc94499a6da958bd929babd5f50d36_642x75.png) 除了C标准库,编译器一般也会附带自己的库,以增加功能,方便用户开发,争夺市场份额。这些库中的每一个函数都在对应的头文件中声明,可以通过 #include 预处理命令导入,编译时会被合并到当前文件