如何编写一个简单的makefile
2014-01-10 19:55
453 查看
一个规则的构成
例子:
解释:
(1)objs变量可以起到“宏”的作用,引用变量时,用$(objs)。
(2)最终目标为nand.bin,它的依赖为init.o nand.o head.o main.o。
(3)表示把所有的c语言文件用arm-linux-gcc生成对应的o文件。
(4)表示把所有的s语言文件用arm-linux-gcc生成对应的o文件。
(5)表示arm-linux-ld以链接脚本nand.lds为规则,将init.o nand.o head.o main.o链接生成一个nand_elf的文件。
(6)表示将nand_elf文件转换成bin文件。
(7)表示将nand_elf转换生成nand.dis的反汇编文件。
其中:
$^ 所有依赖目标的集合
$@ 规则中的目标文件集
$< 依赖中第一个目标的名字。
目标:依赖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
其中:
$^ 所有依赖目标的集合
$@ 规则中的目标文件集
$< 依赖中第一个目标的名字。
相关文章推荐
- 简单思考如何编写描述一个模块
- 编写一个makefile的简单实例
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- 如何编写一个简单的依赖注入容器
- How to Write a simple UEFI EDKII Application:如何编写一个UEFI简单的应用程序[5]
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- 如何编写一个简单群聊
- 编译基础——如何用g++编译自己的库,以及一个简单的makefile文件
- 如何用FFmpeg编写一个简单播放器详细步骤介绍
- 如何使用Python为Hadoop编写一个简单的MapReduce程序
- 一个简单的makefile的编写
- Linux操作系统的简单指令及如何使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。
- 一个简单的Makefile的编写【用自己的话,解释清楚这些】
- 如何编写一个简单的嵌入式操作系统 (2)时间片轮转
- 编写一个简单通用的makefile
- 如何自己编写Makefile(简单介绍)
- 如何在JavaScript中编写一个简单的Bug跟踪器
- 编写一个简单的makefile
- Java入门篇(一)——如何编写一个简单的Java程序
- 如何编写一个makefile