03_GCC与Makefile的使用

windows下c语言的编译

1、预处理

把.h .c展开形成一个文件。宏定义直接替换,还有头文件、库文件的展开形成.i文件

对应的GCC

gcc -e hello.c -o hello.i

2、汇编

生成汇编文件

gcc -s hello.i -o hello.s

3、编译

生成一个.o .obj

gcc -c hello.s -o hello.o

4、链接

windows下生成.exe linux下生成.elf

gcc hello.o -o hello

linux下的编译-Makefile

根据我通过视频的学习,现在文件夹下touch一个Makefile名称的文件,然后进行编辑。

找不到Makefile的代码块,所以用c语言代码块进行书写。

# 代表注释

目标文件:依赖文件
[TAB]指令

hello:hello.c
	gcc hello.c -o hello
//然后在当前目录下使用 make 指令即可

伪命令

.PHONY:
clear:
	rm -rf hello
clearall:
	rm -rf /*
//在当前目录下使用指令 make clear 指令进行调用,这会执行clear后的指令

恒等替换

// = 代表替换, :=代表恒等于, +=代表追加

TAR = test
OBJ = 1.o 2.o 3.o
CC := gcc

$(TAR):$(OBJ)
	$(CC)  $(OBJ) -o $(TAR)
//在使用时要注意 $() 的格式

通配符的使用

// %.c 代表任意一个c文件 *.c 代表所有任意的c文件

TAR = test
OBJ = 1.o 2.o 3.o
CC := gcc

$(TAR):$(OBJ)
	$(CC)  $(OBJ) -o $(TAR)

%.o:%.c
	$(CC) -c %.c -o %.o
// $^ 代表所有的依赖文件, $@ 所有的目标文件, $< 所有依赖文件的第一个文件.................

最终一个例子
假如在目录下有1.c 2.c .3c,我要将他们编译成一个test输出。

test:1.o 2.o 3.o
	gcc 1.o 2.o 3.o -o test
1.o:1.c
	gcc -c 1.c -o 1.o
2.o:2.c
	gcc -c 2.c -o 2.o
3.o:3.c
	gcc -c 3.c -o 3.o

.PHONY:
clearall:
	rm -rf 1.o 2.o 3.o test
clear:
	rm -rf 1.o 2.o 3.o

//加强版
TAR = test
OBJ = 1.o 2.o 3.o
CC := gcc
RM := rm -rf

$(TAR):$(OBJ)
	$(CC)  $@ -o $^
%.o:%.c
	$(CC) -c %.c -o %.o

.PHONY:
clearall:
	$(RM) 1.o 2.o 3.o test
clear:
	$(RM) -rf 1.o 2.o 3.o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值