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






你可能感兴趣的:(Makefile初学(2))