Linux-makefile-006

1【makefile】简介

1.工程管理工具,主要针对没有集成开发环境的场景。
2.指定目录下编写文件【makefile】或者【Makefile】。 
3.在目录下输入【make】调用对应目录下的makefile文件,从而实现对目标文件进行编译。
4.根据【makefile】文件设定的编译规则来编译代码。

2【makefile】工作原理

基本原理:若想生成目标, 检查规则中的所有的依赖文件是否都存在。

依赖文件不存在的情况:
如果有的依赖文件不存在, 则向下搜索规则, 看是否有生成该依赖文件的规则:
如果有规则用来生成该依赖文件,则执行规则中的命令生成依赖文件;
如果没有规则用来生成该依赖文件, 则报错


所有依赖文件均存在的情况:
如果所有依赖都存在, 检查规则中的目标是否需要更新, 必须先检查它的所有依赖,依赖中有任何一个被更新, 则目标必须更新。(检查的规则:时间最大)

3【Makefile】语法

1.格式:
目标:依赖
【tab】命令
即:
要生成的目标文件:依赖的文件
【tab】生成方式

4【makefile】变量

    1.自定义变量
        变量名=值
    
        OBJ=a.out 
    
    2.系统变量
        $@          要生成的文件
        $<          第一个依赖的文件
        $^          所有依赖的文件

5【makefile】编写示例

写法示例(1):

a.out:main.c	test.c
	gcc main.c  test.c -o a.out

写法示例(2):

a.out:main.c test.c
	gcc $^ -o $@

写法示例(3):

OBJ=minishell
OBJS+=main.c
OBJS+=terminal.c
OBJS+=command.c
OBJS+=record.c

$(OBJ):$(OBJS) 
	gcc $^ -o $@

.PHONY:
clean:
	rm $(OBJ)
install:
	sudo cp $(OBJ) /bin
uninstall:
	sudo rm /bin/$(OBJ)

写法示例(4):

all:send recv 

send:send.c 
	gcc $^ -o $@
recv:recv.c 
	gcc $^ -o $@

.PHONY:
clean:
	rm send recv
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值