上一篇已经验证了一个.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();

本文介绍了如何使用GCC命令编译和链接包含多个源文件、头文件及库文件的C程序,强调了防止头文件重复包含的重要性。通过示例展示了GCC的编译和链接过程,然后引入了Make工具,解释了Makefile的编写和依赖关系,说明了Make如何自动化编译和链接过程,提高效率。
:自定义的头文件路径和make的使用&spm=1001.2101.3001.5002&articleId=117693470&d=1&t=3&u=b74f8fbf9417443fad3b62d514e5507e)
2251

被折叠的 条评论
为什么被折叠?



