在Linux中,Makefile是一种用来自动化编译和链接程序的工具。它可以根据程序的依赖关系来自动判断需要重新编译的文件,并生成可执行文件。
下面是一个简单的Makefile的例子:
```
CC=gcc
CFLAGS=-c -Wall
all: hello
hello: main.o hello.o
$(CC) main.o hello.o -o hello
main.o: main.c
$(CC) $(CFLAGS) main.c
hello.o: hello.c
$(CC) $(CFLAGS) hello.c
clean:
rm -rf *.o hello
```
上述Makefile中的关键部分包括:
- `CC`:编译器的名称,可根据需要更改为其他编译器,如`clang`;
- `CFLAGS`:编译选项,例如`-c`表示编译为目标文件,`-Wall`表示开启所有警告;
- `all`:默认的目标,即执行`make`命令时,默认执行的目标;
- `hello`:生成可执行文件的目标,依赖于`main.o`和`hello.o`;
- `main.o`和`hello.o`:分别表示`main.c`和`hello.c`文件的目标文件,依赖于对应的源文件;
- `clean`:清理生成的目标文件和可执行文件。
使用Makefile时,只需在终端中进入Makefile所在目录,并执行`make`命令即可开始编译和链接程序。执行`make clean`命令可以清理生成的目标文件和可执行文件。