2016.4.5 关于交叉编译工具链的使用及makefile的编写
1、常用的交叉编译工具使用实例:
现有文件:源文件led.S及连接器脚本文件led.lds
i、arm-linux-gcc -g -c led.S -o led.o
-g选项告诉编译器添加调试用的信息。
-c告诉编译器只编译生成.o文件为止
ii、arm-linux-ld -Tled.lds -o led.elf led.o
-Tled.lds:链接器脚本文件选项
iii、arm-linux-readelf -a led.elf
arm-linux-readelf -d led.elf
-a:显示出全部信息
-d:dynamically linked libs查看库
iv、arm-linux-objdump -D -S led >dump
将反汇编之后的文件保存在一个名为dump的文件中,建议在反汇编之前的编译时生成调试信息,即加入-g选项。
v、arm-linux-objcopy -O binary led.elf led.bin
将生成的。elf文件转换成.bin文件,因为只有二进制文件才能在我们的目标机上运行。
2、上述一整套流程,可以用以个makefile来写:
eg:
led.bin:led.elf
[TAB] arm-linux-objcopy -O binary led.elf led.bin
led.elf:led.o led.lds
[TAB]arm-linux-ld -Tled.lds -o led.elf led.o
led.o:led.S
[TAB]arm-linux-gcc -g -c led.S -o led.o
clean:
[TAB]rm led.bin led.elf led.o
一定要注意格式,命令前面不能用空格,用的是换行TAB键。