上一篇已经验证了一个.c文件是如何通过预编译、编译、汇编、链接四个步骤来一步步变为计算机上的可执行文件的。
当然这只是一个.c文件,如果存在大量的.c文件,以及一些不存在于root路径里的头文件,也就是我们自己定义的文件夹中的.h文件,甚至是.lib或.a的库文件路径,又应该怎么在这些复杂的路径里经过层层筛选,编译连接成一个可执行文件呢?
GCC自然也提供了这样的命令,通过这些命令和参数的结合,就可以将多个路径下的多个.c和.h文件编译链接成一个可执行文件。
那么显然,每一个.c文件都需要执行一次编译命令,生成目标文件xxx.o,最后再使用链接器将这些xxx.o文件以及可能需要链接的xxx.a库文件一起链接成一个可执行文件,这才算成功。显而易见这样的工程量在文件多时会特别大,就需要一个工具来批量化的操作这些文件执行这些指令,最后向外提供一个简单的接口命令,来实现我们可以通过一键编译链接,这个工具来实现背后复杂的批量化操作。这就是make工具。
好的先用起来,试验一下。
目录结构
准备代码
- main.c文件中包含两个自定义的头文件:sub1.h和sub2.h 。这两个头文件中分别向外提供了sub1Print();和sub2Print();函数。
#include "stdio.h"
#include "sub1.h"
#include "sub2.h"
int main(void)
{
while(1)
{
sub1Print();