一个规则的构成

目标:依赖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

其中:

$^ 所有依赖目标的集合

$@ 规则中的目标文件集

$< 依赖中第一个目标的名字。

最新文章

  1. 实战Java虚拟机之三“G1的新生代GC”
  2. communication between threads 线程间通信 Programming Concurrent Activities 程序设计中的并发活动 Ada task 任务 Java thread 线程
  3. keil 编译的一些错误
  4. 深入理解JavaScript的变量作用域(转载Rain Man之作)
  5. Manifest文件简介
  6. java异常练习2
  7. Android 改变标题栏的背景色
  8. C#操作Xml:使用XmlReader读Xml
  9. Zepto Code Rush 2014——Dungeons and Candies
  10. Android:自定义Dialog大小,显示圆角
  11. 4、File类之获取方法
  12. rebot framework的搭建 在windows下
  13. springboot全局异常处理
  14. 1、Filebeat概述
  15. Python&#160;对服务器返回数据编码进行判断之chardet
  16. 图解Redis之数据结构篇——链表
  17. bzoj千题计划320:bzoj4939: [Ynoi2016]掉进兔子洞(莫队 + bitset)
  18. 【Linux】Screen命令
  19. Thinkphp 3.2 验证码图片显示错误解决方法
  20. 织梦dedecms模板制作时,循环递增autoindex使用方法整理

热门文章

  1. 关于fork有意思的两道题目
  2. 查看线程linux cpu使用率
  3. 几个命令行命令的总结(node, babel-cli, babel-node)
  4. springframework hibernate Transaction not successfully started
  5. Oracle、MySql、Sql Server比对
  6. struts 2学习笔记—浅谈struts的线程安全
  7. [置顶] iptables 性能 测试
  8. 使用navicat 11 出现不能返回存储过程结果的问题
  9. Visual Studio 调试技巧 (二)-- 为中断设置条件
  10. block没那么难(一):block的实现