Makefile初学(2)

《朱老师物联网大讲堂》学习笔记

学习网站:www.zhulaoshi.org


led.bin: start.o 
arm-linux-ld -Ttext 0x0 -o led.elf $^

指定链接基地址为0x0,生成led.elf可执行程序,

但是这个led.elf文件在嵌入式裸机中还不能执行,

需要制作成image镜像文件才行。


arm-linux-objcopy -O binary led.elf led.bin

这句命令把led.elf文件制作成了led.bin镜像文件


arm-linux-objdump -D led.elf > led_elf.dis

帮助我们进行反汇编,lef.elf文件反过来就得到对应汇编程序,

说白了就是逆向破解,得到它的汇编源代码,

这个得到的汇编源代码和原来的程序90%左右是相同的


gcc mkv210_image.c -o mkx210

这句是在宿主机,也就是笔记本上的虚拟机中执行的,

不是开发板哦,看gcc类型就可以大概判断

纠其原因是USB启动和SD卡启动的不同


./mkx210 led.bin 210.bin
得到210.bin作为SD卡启动的镜像


%.o : %.S

前面是目标,后面是依赖,看见.S文件就把它转换为.o文件


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

-c代表只编译不链接


%.o : %.c

前面是目标,后面是依赖,看见.c文件就把它转换为.o文件


arm-linux-gcc -o $@ $< -c 
$@ $<  这两个是makefile的自动变量
$@ 其实就是%.o
$< 其实就是%.S 和 %.c


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

-f, --force    忽略不存在的文件,从不给出提示。

这个呢,就是我们ARM裸机LED中Makefile的文件


在IDE开发环境中,或者使用gcc 1.c -o exe等情况下,

我们程序的编译成功可执行程序似乎就一步,

但是实际上,还可以细分。

这里我们先分为编译和链接两个步骤。


编译用gcc,链接中ld






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值