Linux--make基础

(1)编译过程
  1. 预处理 gcc -E hello.c -o helle.i

  2. 编译 gcc -S hello.i -o hello.s

  3. 汇编 gcc -c hello.s -o hello.o

  4. 链接 gcc hello.o -o hello

hello:hello.o
	gcc -o hello hello.o
hello.o:hello.S
	gcc -o hello.o -c hello.S
hello.S:hello.i
	gcc -o hello.S -S hello.i
hello.i:hello.c
	gcc -o hello.i -E hello.c

(2)make使用
  1. 常用参数
    在这里插入图片描述

  2. include

  • 用于引入配置文件,makefile文件中配置分开编辑
  • 如直接加入当前目录下配置文件 include config.mk

  1. 虚拟路径VPTH
  • 直接在makefile文件中加入虚拟路径 VPATH = d1 d2 d3
  • 定义后make时自动寻找d1 d2 d3下的文件

  1. makefile文件中命令前加 @ make时不显示打印命令

(3)显示规则
目标文件:依赖文件
	[gcc指令]

.PHONY:clean   #伪目标标识,避免文件重名
clean:
	rm -rf []
	
若要上一条命令执行结果应用在下一条命令可用 分号 ;

exe:
	cd /home ; pwd 

(4)隐示规则
%.c %.o 任意的.c .o文件 *.o *.c 所有的.c .o 文件

默认推导
$(CC) -c $(CPPFLAGS) $(CFLAGS)

自动链接规则
a: a.o b.o c.o  注意目标文件必须和其中一个.o文件同名

(5)变量
替换(=) 追加(+=) 恒等于只能使用已经定义的变量(:=) 未定义则赋值类似ifdefined(?=)
变量引用 $(变量名) 若需要使用$ 则需要打两个 $$
宏定义替换

a = $(a) -o 会造成死循环
  • 通用编译
src_file = $(wildcard *.c)
des_file = $(patsubst %.c, %,$(src_file))

all:$(des_file)
	
%:%.c
	gcc -o $@ $^ -g

.PHONY clean:
	rm -f $(des_file)

(6)通配符
自动化变量
所有目标文件 $@  所有依赖文件 $^ 所有依赖文件的第一个文件$<  比目标新的集合 $? 函数库文件$%
加上D则是目录,加上F是文件

在这里插入图片描述


(7)字符串函数
  • 函数使用方式如下:

  • $(< funtion> < argument >)

      字符串调用函数 subst
      模式字符串替换 patsubst
      查找 findstring
      过滤函数 filter
      反过滤 filter-out
      排序 sort
      取单词 word
      取单词串 wordlist
      统计单词个数 words
      首单词 firstword
    

(8)文件名函数
取目录 dir
取文件名 notdir
取后缀名 suffix
取前缀名 basename
加后缀 addsuffix
加前缀 addprefix

(9)结构函数
循环函数 foreach
条件 ifeq ifnqe ifdef ifndef

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值