Makefile示例学习

裸机程序中的Makefile是把程序的编译和链接过程分开的,编译要使用编译器gcc,链接使用链接器ld

示例:

led.bin: start.o

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

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

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

    gcc mkv210_image.c -o mkx210

    ./mkx210 led.bin 210.bin

%.o : %.S

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

%.o : %.c

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

clean:

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

1.%.o是目标,%.c,%.S是依赖

2.$@代表的是%.o文件,$<代表是%.S和%.c

3.-c 代表只编译不链接,-o用来指定文件名字

4.arm-linux-ld -Ttext 0x0 -o led.elf $^  arm-linux-ld是用来链接的,-Ttext 0x0指定链接基地址

5.链接器得到的led.elf其实就是我们的可执行程序(如果是在操作系统下,就可以直接执行,但裸机中我们需要的是可以烧写的文件)可烧写的文件就叫做镜像,也就是image

6.arm-linux-objcopy -O binary led.elf led.bin 使用led.elf为原材料来生成led.bin(镜像image)

7.arm-linux-objdump -D led.elf >led_elf.dis 把编译好的.elf格式的文件转为对应的汇编文件,得到汇编代码

8.gcc mkv210_image.c -o mkv210在主机(linux系统中进行编译链接生成可执行文件mkv210)

9.     ./mkv210  led.bin  210.bin      210.bin是通过SD卡启动时的裸机镜像,这个镜像由led.bin为原材料,mkv210为工具加工得到

猜你喜欢

转载自blog.csdn.net/weixin_40405692/article/details/81024899
今日推荐