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键。

posted @ 2016-04-05 17:06  玩呀熊熊  阅读(1107)  评论(0编辑  收藏  举报