1.动静态库和动静态链接(操作)
-
静态库是指编译链接时,
把库⽂件的代码全部加⼊到可执⾏⽂件中,因此⽣成的⽂件⽐较⼤,但在运⾏时也就不再需要库⽂件了。其后缀名⼀般为“.a” -

-
动态库与之相反,在编译链接时并
没有把库⽂件的代码加⼊到可执⾏⽂件中,⽽是在程序执⾏时由运⾏时链接⽂件加载库,这样可以节省系统的开销。动态库⼀般后缀名为“.so” -

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

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

2.自动化构建make/makefile
1.初识makefile
- makefile带来的好处就是⸺⸺
“⾃动化编译”,⼀旦写好,只需要⼀个make命令,整个⼯程完全
⾃动编译,极⼤的提⾼了软件开发的效率。 - make是⼀个命令⼯具,是⼀个解释makefile中指令的命令⼯具,⼀般来说,⼤多数的IDE都有这
个命令,⽐如:Delphi的make,VisualC++的nmake,Linux下GNU的make。可⻅,makefile
都成为了⼀种在⼯程⽅⾯的编译⽅法。 - make是⼀条命令,makefile是⼀个⽂件,两个搭配使⽤,完成项⽬⾃动化构建。
浅浅尝试一下:
1.

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

用vim打开makefile,并写入以上内容,
:前为要生成的可执行程序的名字,:后为源文件(第一行为依赖关系)- gcc code.c -o code (第二行为
依赖方式)

make指令完成编译。

运行也成功
2.具体语法
1.清理代码文件
如果代码文件我不想要了,那怎么清理呢?

先vim打开makefile,写入红框的内容
- 第一行表示
clean不依赖于任何文件 - 第二行为依赖方式

执行make clean,发现code(可执行文件)已经被删除

2.依赖关系的推导

test.c存在,推导结束

3.完整的makefile语法
1.类似宏替换的操作

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

模拟100个文件的情况

我们来依次解释:

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

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

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

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

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

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