Linux下学C语言——第十五节 终端编译makefile

快捷键

touch main.c tool1.c  tool1.h tool2.c tool2.h //创建这些文件

vim * -p //打开所有文件编辑

gt//切换vim内的页面

gcc *.c//全部编译

rm A //删除文件

vim makefile //make的文件

make //执行makefile文件

make clean //调用makefile文件中的clean函数

拷贝A到B:cp A B

编写的makefile文件:帮助项目解决因部分文件变化导致的编译困难

//目标文件:源文件

//生成工具gcc 源文件 -o 目标文件

mytool: main.o tool1.o tool2.o

        gcc main.o tool1.o tool2.o -o mytool

//目标文件:源文件

//生成工具gcc 源文件 -汇编c -报错W -调试g -生成o 目标文件

main.o: main.c

        gcc main.c -c -Wall -g -o main.o

tool1.o :tool1.c

        gcc tool1.c -c -Wall -g -o tool1.o

tool2.o: tool2.c

        gcc tool2.c -c -Wall -g -o tool2.o   

//clean函数

//删除 所有 .o文件  执行文件 递归删除

clean:

        rm *.o mytool -rf

简化://$^代替源文件

//$@代替目标文件

//$( )代替描述词

OBJS = main.o tool1.o tool2.o

CC = gcc

CFLAGS += -c -Wall -g

mytool: $(OBJS)

        $(CC)  $^  -o  $@

main.o: main.c

        $(CC) $^ $(CFLAGS) -o $@

tool1.o :tool1.c

        $(CC) $^ $(CFLAGS) -o $@

tool2.o: tool2.c

        $(CC) $^ $(CFLAGS) -o $@

clean:

        $(RM) *.o mytool -rf

简化://把上述中间三行提取公式,%代替过程文件

//切记空格和tab空格不可缺

OBJS = main.o tool1.o tool2.o

CC = gcc

CFLAGS += -c -Wall -g

mytool: $(OBJS)

        $(CC) $^ -o $@

%.o: %.c

        $(CC) $^ $(CFLAGS)  -o $@

clean:

        $(RM) *.o mytool -rf

最终简化:

all:list

list:main.o list.o

        $(CC) $^ -o  $@

clean:

        rm   *.o list -rf

执行:

[tom@CentOS7 testmake]$ make

make: “mytool”是最新的。

[tom@CentOS7 testmake]$ make clean

rm -f *.o mytool -rf

[tom@CentOS7 testmake]$ make

gcc main.c -c -Wall -g -o main.o

gcc tool1.c -c -Wall -g -o tool1.o

gcc tool2.c -c -Wall -g -o tool2.o

gcc main.o tool1.o tool2.o -o mytool

[tom@CentOS7 testmake]$ ./mytool

tool1 print

tool2 print

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值