ARM交叉编译工具链
交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统。
交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc三个部分组成。
免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 CodeSourcery,第三是Linaro。
(以上摘自:http://www.veryarm.com/cross-tools)
常用工具
下面列出的都是开发过程中编译,调试常用的工具。以GNU GCC 工具链为例讲解,其他的交叉编译工具链,一样存在下面的工具,只是名字前应该加上$(CROSS_COMPILE),形如:$(CROSS_COMPILE)gcc, $(CROSS_COMPILE)objdump
[1] 编译
gcc hello.c
[2] 汇编
ar hello.s -o hello.o
[3] 链接
ld hello.o -o hello
[4] 格式转换
objcopy --gap-fill=0xff(填充1) -O binary(目标文件格式) -S hello(ELF格式的可执行文件) hello.bin
[5] 反汇编
objdump -D hello > hello.dis
[6] 查看文件格式
file hello
[7] 读取ELF文件中的符号表
nm hel