当前位置: 首页 > news >正文

Makefile解析(最简单的LED)

①led_sp.bin: start.o led.o

#led_sp.bin是由 start.o 和 led.o 生成


②arm-linux-ld -Ttext 0x0 -o led_sp.elf $^

设置led_sp.elf的起始地址0x0

 

③arm-linux-objcopy -O binary led_sp.elf led_sp.bin

把led_sp.elf中的内容复制到led_sp.bin中

 

④arm-linux-objdump -D led_sp.elf > led_sp_elf.dis

将这个程序的反汇编程序写入到led.dis这个文件中,在终端中不显示出来.

当你打开led.dis这个文件时就会看到上面命令的输出的反汇编程序了

 

⑤gcc mkv210_image.c -o mkmini210

gcc是编译的意思,编译mkv210_image.c 生成mkmini210


⑥./mkmini210 led_sp.bin 210.bin

执行 mkmini210 led_sp.bin 210.bin

(这些程序下载进去,执行mkmini210 led_sp.bin 210.bin)

 

⑦%.o : %.S

把所有的.S文件编译成.o文件


⑧arm-linux-gcc -o $@ $< -c

只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 

%.o : %.c

把所有的.c文件编译成.o文件
arm-linux-gcc -o $@ $< -c

 

 

⑨clean:
rm *.o *.elf *.bin *.dis mkmini210 -f

rm:(remove,移除)

删除所有的1.o,2.elf,3.bin,4.dis, 5mkmini210 ,6 -f

 *:通配符(所有的.o,,,,)

 

-------------------------------------------------------------------

arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o

  我们看看它是什么意思:

-o选项设置输出文件的名字为led_on_c_tmp.o;

“--Ttext 0x00000000”设置代码段的起始地址为0x00000000;

这条指令的作用就是将crt0.o和led_on_c.o连接成led_on_c_mp.o可执行文件

此可执行文件的代码段起始地址为0x00000000

arm-linux-objcopy

被用来复制一个目标文件的内容到另一个文件中,可用于不同源文件的之间的格式转换

 

 $^ 所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量


会去除重复的依赖目标,只保留一份。


$@   表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于


目标中模式定义的集合。

 

 

 

************************************************

       Linux初学者,真心的希望来到的朋友留言,这样我也知道什么地方有问题^_^谢谢了!!

 

转载于:https://www.cnblogs.com/Ph-one/p/makefile.html

相关文章:

  • Linux点亮一个灯
  • IC行业
  • 疯子博客园
  • openwrt
  • ENC28J60
  • IT
  • ::
  • LCD1602小程序
  • STC51六中中断配置点亮一个LED
  • STC51几种简单的延时函数
  • GSM900TCP/UDP连接
  • arm-linux工具
  • 盎司
  • Win7下硬盘安装fedora17
  • sudo fdisk -l
  • Google 是如何开发 Web 框架的
  • [LeetCode] Wiggle Sort
  • 【Linux系统编程】快速查找errno错误码信息
  • Angular 2 DI - IoC DI - 1
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • java中的hashCode
  • js算法-归并排序(merge_sort)
  • Markdown 语法简单说明
  • Netty源码解析1-Buffer
  • tab.js分享及浏览器兼容性问题汇总
  • Vue学习第二天
  • 蓝海存储开关机注意事项总结
  • 深入浅出Node.js
  • 数据仓库的几种建模方法
  • 双管齐下,VMware的容器新战略
  • 一个SAP顾问在美国的这些年
  • 译自由幺半群
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 带你开发类似Pokemon Go的AR游戏
  • #git 撤消对文件的更改
  • $forceUpdate()函数
  • $L^p$ 调和函数恒为零
  • (1) caustics\
  • (10)STL算法之搜索(二) 二分查找
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (4)事件处理——(7)简单事件(Simple events)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (floyd+补集) poj 3275
  • (poj1.3.2)1791(构造法模拟)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (四) 虚拟摄像头vivi体验
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一一四)第九章编程练习
  • (转)JAVA中的堆栈