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
转载于:https://blog.51cto.com/13502993/2126875