把库⽂件的代码全部加⼊到可执⾏⽂件中,因此⽣成的⽂件 ⽐较⼤,但在运⾏时也就不再需要库⽂件了。其后缀名⼀般为“.a”
没有把库⽂件的代码加⼊到可执⾏⽂件中 ,⽽是在程序执⾏时由运⾏时链接⽂件加载库,这样可以节省系统的开销。动态库⼀般后缀名为“.so”
静态链接操作:gcc code.o -o mycode -static

动态链接操作:gcc code.o -o mycode

“⾃动化编译”,⼀旦写好,只需要⼀个make命令,整个⼯程完全
⾃动编译,极⼤的提⾼了软件开发的效率。浅浅尝试一下:

先创建一个code.c并用vim进行编写,再新建一个makefile

用vim打开makefile,并写入以上内容,
:前为要生成的可执行程序的名字,:后为源文件(第一行为 依赖关系)依赖方式)
make指令完成编译

运行也成功
如果代码文件我不想要了,那怎么清理呢?

先vim打开makefile,写入红框的内容
clean不依赖于任何文件
执行make clean,发现code(可执行文件)已经被删除


test.c存在,推导结束


之前我们在makefile里都是直接写文件名的,这里使用 类似宏替换 的方式替换命令和文件,记住,在使用替换时要加上$()
假如我们的文件非常多,那么上述类似宏替换的方法就不行了,举例:

模拟100个文件的情况

我们来依次解释:

这句话表示,SRC拿到了当前目录里 所有以.c结尾的文件

这行表示OBJ是由SRC中 所有.c变为.o得来的

这里的^是指依赖关系中:后的内容,@是指:前的内容

这里%是通配符,:左边匹配所有.c结尾的文件,<表示将展开的所有.c文件,一个接一个地匹配命令,形成.o文件

每一行最前面的@是指在外面使用make指令时 不显示过程,直接给出结果(可不加)

我们也可以 自我定制执行某一步骤后,想要输出的提示内容