Makefile简介
在Linux上编程,常常需要编写Makefile来编译程序。编译的过程大致可以分为两个步骤:第一步由.c和.h文件编译生成中间代码文件(即.o文件);第二步把多个中间代码文件链接合并为一个目标文件(即可执行程序)。Linux上的GNU make命令会对Makefile中的指令进行解释执行,比手工调用clang或gcc来编译程序方便而且高效。关于Makefile文件的用途、格式、工作原理等详见CSDN上陈皓(haoel)的博客“跟我一起写 Makefile”系列文章。简单地说,Makefile文件指明了文件之间的依赖关系,make命令会根据各个文件的修改时间确定哪些文件需要重新编译,生成所需要的文件并链接目标程序。
一个真正的coder,是有必要花时间认真系统地学习下的。但是,对于一般的小项目和课程作业,可能不需要学习复杂的Makefile文件编写规则。下面贴出来一个可供参考的Makefile。例如,项目中包含若干.h 和.c 文件,需要编译生成目标文件encoder和decoder。示例Makefile文件如下所示:
Makefile示例
segment 1:
CFLAGS = -Wall -Wextra -Werror -Wpedantic -std=c99
CC = clang $(CFLAGS)
第二行指定使用的编译器为