C-编译与链接
C编程的基本策略是使用程序将源代码文件转换为可执行文件。通过编译和链接来完成这个过程:
(1). 编译器:将源文件转换(或翻译)为中间文件;
中间文件有多种形式,最为普遍的形式,就是将源代码转为机器语言代码,并保存到目标代码文件中。
(2). 链接器:将中间文件和其他文件(预编译的库文件代码、系统的标准启动代码)合并,生成可执行文件。
编译后的目标文件中是翻译后的机器码,无法直接运行,还缺少启动代码(startup code)和库函数。
①. 启动代码是程序和操作系统之间的接口,且Windows和Linux系统所需要的启动代码不同,因此这些系统处理程序的方式也不同。
②. 所有的C程序都要使用C标准库中的函数,如printf()。这些函数都存储在库文件中,库文件中有许多函数的目标代码。
链接器将编译生成的目标代码、系统的标准启动代码和库代码合并成一个文件,即可执行文件,该文件也是由机器语言指令组成。为了减少体积,链接器只会合并程序中使用到的库函数代码。
这种分而治之的方式,对程序进行了模块化
,可以独立编译单独模块,再合并已编译的模块。若只更改了某个模块,只需重新编译此模块,无需重新编译其他模块,再重新链接即可。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kure's Blog!