Makefile的基本用法

1.Makefile的基本概念:

目标:目标顶格写,后面是冒号(冒号后面是依赖)
依赖:依赖是用来产生目标的原材料。
命令:命令前面一定是Tab,不能是顶格,也不能说多个空格。命令就是要生成那个目标需要做的动作。

2.示例代码:

led.bin: start.o 
	arm-linux-ld -Ttext 0x0 -o led.elf $^	//设置连接地址为0x0,在linux系统中.elf文件是可执行文件
	arm-linux-objcopy -O binary led.elf led.bin	//把可执行文件变成可烧写文件
	arm-linux-objdump -D led.elf > led_elf.dis	//把可执行文件反汇编
	gcc mkv210_image.c -o mkx210	//编译mkv210_image.c
	./mkx210 led.bin 210.bin	//用led.bin(USB烧写)生成210.bin(SD烧写),SD烧写要添加开头16字节的校验信息,这是S5PV210芯片特有的,详细信息参考芯片的启动过程。
	
%.o : %.S
	arm-linux-gcc -o $@ $< -c	//把.S文件都编译得到.o文件

%.o : %.c
	arm-linux-gcc -o $@ $< -c 	//把.c文件都编译成.o文件(-c是只编译不链接)

clean:
	rm *.o *.elf *.bin *.dis mkx210 -f

3.调用方法:

3.1.make:没有指明目标,默认执行第一个目标(led.bin)下的语句。

3.2.make clean:得到clean这个目标,删除指定后缀的文件。

4.Makefile的自动变量

4.1.什么是自动变量

自动变量的含义:Makefile中预定义的特殊意义的符号。就类似于C语言编译器中预制的那些宏__FILE__一样。在有些情况下文件集合中文件非常多,描述的时候很麻烦,所以我们Makefile就用一些特殊的符号来替代符合某种条件的文件集,这就形成了自动变量。

4.2.常见的自动变量

(1)."$@": 规则的目标文件名;
(2)."$<" : 规则的依赖文件名,在规则中表示所有依赖的文件名,在其他地方只表示第一个依赖的文件名;
(3)."$^": 依赖的文件集合;

5.Makefile中使用通配符

(1)* :匹配若干个任意字符;
(2)? : 匹配1个任意字符;
(3)[ ] : 将[ ]中的字符依次去和外面的结合匹配;
(4)% :只在规则中使用,和*的作用一样。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Makefile 是一个用于管理和自动化软件项目中的编译和构建过程的工具。通过 Makefile,可以定义一系列规则和依赖关系,告诉计算机如何构建和更新项目。 以下是 Makefile基本使用方法: 1. 创建一个名为 "Makefile" 或 "makefile" 的文件,并将其放置在项目根目录下。 2. 在 Makefile 中定义规则。每个规则由以下几部分组成: - 目标(Target):规定了要生成的文件或执行的操作。 - 依赖(Dependencies):规定了生成目标所需要的文件或操作。 - 命令(Command):规定了生成目标的具体操作。 例如,下面是一个简单的 Makefile 示例: ```makefile target: dependency1 dependency2 command1 command2 ``` 3. 定义规则后,可以在命令行中使用 `make` 命令执行 Makefile 中的规则。例如,要执行上述示例中的目标 `target`,可以运行命令: ``` make target ``` 4. Makefile 还提供了一些特殊的变量和函数,可以用于更灵活地定义规则。一些常用的变量包括: - `CC`:C 编译器的名称。 - `CFLAGS`:编译选项。 - `LDFLAGS`:链接选项。 - `SRC`:源文件列表。 - `OBJ`:目标文件列表。 - `BIN`:生成的可执行文件名。 你可以在规则中使用这些变量,例如: ```makefile CC = gcc CFLAGS = -Wall -O2 target: $(OBJ) $(CC) $(LDFLAGS) -o $(BIN) $(OBJ) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ ``` 这是 Makefile基本使用方法,通过定义规则和使用 make 命令,你可以自动化编译和构建项目。更复杂的项目可能需要更详细的 Makefile 配置,你可以查阅相关文档来深入了解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值