makefile 的编写
CC = gcc
OBJ = LIST
FLAG = -g -Wall
$(OBJ):main.c list.c
$(CC) $(FLAG) -o $@ $^
.PHONY:clean
clean:
rm -i *.o
首先是变量,一般用大写来代替 ,类似C中的宏定义;
$() 括号中为变量,$$@为生成和目标文件名一致的输出文件,$^为目标文件所需要的依赖规则中所有的选择条件
GCC:编译流程分为四个步骤
- 预处理 gcc -E flie.c -o flie.i
- 编译 gcc -S flie.c -i flie.s(将.c .i等文件翻译成汇编代码)
- 汇编 gcc -E flie.s -o flie.o(将汇编代码翻译成机器代码)
- 链接 gcc -E flie.c -o flie (将生成的多个目标文件(.o文件)连接起来,生成可执行文件)
gcc 的格式 :gcc 【选项】 要编译的文件 【选项】【目标文件】
选项: -E:使用此选项表示仅作预处理,不进行编译,汇编和连接。
-S:编译到汇编语言不进行汇编和连接。
-c:编译到目标代码。
-o: 文件输出到文件。 -Wall 输出警告信息
gcc 中 -o后面的文件 就是目标生成文件 可以在前面也可以在后面。
-
1 gcc -E -o hello.i hello.c //对C文件做预处理 2 gcc -S -o hello.s hello.i //进行编译,生成汇编文件 3 gcc -c -o hello.o hello.s //对汇编代码编译成目标文件 4 gcc -o hello hello.o //生成可执行程序hello