gec@ubuntu:/mnt/hgfs/笔记/2ARM1/demo/led7$ ls

led7.c  led7.o  led.bin  led.dis  led.elf  Makefile


分析Makefile文件

led.bin: led7.o

----------> 生成的裸机二进制可执行程序led.bin,该可执行程序由哪些源文件生成的:如:test1.o test2.o test3.o


arm-none-linux-gnueabi-ld -Ttext 0x40000000 -o led.elf $^

----------> 调用连接器将所有的依赖文件($^)连接成一个led.elf可执行文件,链接的时候,将代码段链接到0x40000000地址。

           ----->0x40000000是链接地址、下载地址、执行地址----->DDR3内存中。

            (-Ttext : https://www.linuxidc.com/Linux/2014-11/108829.htm)

       ($^:http://www.360doc.com/content/14/0625/15/16285334_389630875.shtml)


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

----------> 调用可执行文件的转换工具,将elf格式可执行文件转换成bin的可执行文件。

arm-none-linux-gnueabi-objdump -D led.elf > led.dis

----------> 调用反汇编工具,对elf格式的执行性文件进行反汇编,得到反汇编文件

%.o : %.S

arm-none-linux-gnueabi-gcc -o $@ $< -c -nostdlib

---------->将当前目录下的汇编源文件(*.S)编译成目标文件(*.o)

-nostdlib ----->不使用标准的C库

%.o : %.c

arm-none-linux-gnueabi-gcc -o $@ $< -c -nostdlib

---------->将当前目录下的C源文件(*.c)编译成目标文件(*.o)


clean:

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