您的位置:首页 > 其它

如何编写一个简单的makefile

2014-01-10 19:55 453 查看
一个规则的构成

目标:依赖1,依赖2······

命令


例子:

objs := init.o nand.o head.o  main.o

nand.bin : $(objs)
arm-linux-ld -Tnand.lds -o nand_elf $^
arm-linux-objcopy -O binary -S nand_elf $@
arm-linux-objdump -D -m arm  nand_elf > nand.dis

%.o:%.c
arm-linux-gcc -Wall -c -O2 -o $@ $<

%.o:%.S
arm-linux-gcc -Wall -c -O2 -o $@ $<

clean:
rm -f  nand.dis nand.bin nand_elf *.o


解释:

(1)objs变量可以起到“宏”的作用,引用变量时,用$(objs)。

(2)最终目标为nand.bin,它的依赖为init.o nand.o head.o main.o。

(3)表示把所有的c语言文件用arm-linux-gcc生成对应的o文件。

%.o:%.c
arm-linux-gcc -Wall -c -O2 -o  $@  $<


(4)表示把所有的s语言文件用arm-linux-gcc生成对应的o文件。

%.o:%.s
arm-linux-gcc -Wall -c -O2 -o $@ $<


(5)表示arm-linux-ld以链接脚本nand.lds为规则,将init.o nand.o head.o main.o链接生成一个nand_elf的文件。

arm-linux-ld -Tnand.lds -o nand_elf $^


(6)表示将nand_elf文件转换成bin文件。

arm-linux-objcopy -O binary -S nand_elf $@


(7)表示将nand_elf转换生成nand.dis的反汇编文件。

arm-linux-objdump -D -m arm  nand_elf > nand.dis


其中:

$^ 所有依赖目标的集合

$@ 规则中的目标文件集

$< 依赖中第一个目标的名字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐