Makefile 的编写

Posted by JIN Blog on May 27, 2018

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