简介
在我们入门C/C++语言时,编写的大部分C语言程序都只包含一个源文件,没有将代码分散到多个模块中,这里的模块指的时不同的源文件,每个文件称为一个可编译单元,可以分别编译。
在C语言中,我们可以将一个.c文件称为一个模块(Module);所谓模块化开发,是指一个程序包含了多个源文件(.c 文件)以及头文件(.h 文件)。
C语言由源代码生成可执行文件的各阶段如下:
C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件。通常把编译预处理,编译,优化程序,汇编程序这几个阶段统称编译阶段。这里主要讲解编译与链接部分,其他部分涉及编译原理,且此博文不涉及该方面内容
这里需要注意几点:
- 编译是针对单个源文件(.c 文件)的,有多少个源文件就生成多少个目标文件,并且在生成过程中不受其他源文件的影响。也就是说,每个源文件都是独立编译的。
- 链接就是将构成整个C程序各个函数的代码,包括相应的库函数(标准库,动态库,静态库)的实现代码,程序的启动以及退出代码,用户编写的各个函数代码链接在一起,从而形成最后的可执行程序的过程
例子
假设某文件夹中目前包含两个源程序(.c),main.c和sum.c(假设读者配置好gcc环