一、相关知识
1. `main: main.o add.o`:这是一个规则,指定了"main"可执行文件的生成方式。它依赖于两个目标文件"main.o"和"add.o"。这意味着在生成"main"之前,需要先生成这两个目标文件。
2. ` gcc main.o add.o -o main`:这是生成"main"可执行文件的命令。它使用`gcc`编译器将"main.o"和"add.o"链接在一起,生成名为"main"的可执行文件。
3. `main.o: main.c`:这是生成"main.o"目标文件的规则。它指定了"main.o"依赖于"main.c"源文件,意味着需要先编译"main.c"才能生成"main.o"。
4. ` gcc -c main.c`:这是生成"main.o"目标文件的命令。它使用`gcc`编译器编译"main.c",但不进行链接操作。这将生成"main.o"目标文件。
5. `add.o: add.c add.h`:这是生成"add.o"目标文件的规则。它指定了"add.o"依赖于"add.c"和"add.h"文件,说明需要编译"add.c"文件。
6. ` gcc -c add.c`:这是生成"add.o"目标文件的命令。它使用`gcc`编译器编译"add.c"文件,但不进行链接操作。这将生成"add.o"目标文件。
7. `clean:`:这是一个伪目标,用于清理生成的中间文件和可执行文件。这个规则没有依赖,只是用于执行`make clean`时的清理操作。
8. ` rm -rf *.o main`:这是清理操作的命令。它会删除所有的".o"目标文件和"main"可执行文件。
使用这个Makefile,通过运行`make`命令来编译和链接你的源代码文件,生成"main"可执行文件。可以运行`make clean`来清理中间文件和可执行文件。
rm
:是一个命令,用于删除文件。-rf
:是rm
命令的选项,它告诉rm
命令执行递归删除和强制删除,即使文件或目录是只读的或不存在。*.o
:通配符*.o
匹配当前目录中的所有以".o"为扩展名的文件,通常是编译生成的目标文件。main
:这是要删除的另一个文件,通常是可执行文件。