是许多工具的集合
交叉编译器:
arm-linux-gcc 运行在arm-linux平台的编译器,和gcc用法完全一样
用法:#arm-linux -gcc 【选项】 文件名 【选项】 【目标名】
arm-linux-gcc hell0.c –o hello
arm-linux-gcc –static hell0.c –o hello (静态编译)
不同:头文件寻找位置不同,比如stdio.h位置不同
标准gcc的头文件从/usr/include查找,但是arm-linux-gcc不是,可以用print-search-dirs选项参数显示她的相关路径
-c只编译不链接
-g编译的同时加上调试信息,使得在反汇编下有对应关
交叉链接器
#arm-linux-ld -T【链接器脚本文件】 -o 【目标文件】 【初始文件名(可以有多个)】
交叉ELF文件工具
#arm-linux-readelf -a elf文件
当程序不能运行的时候,有如下情况
(1)编译工具不对,使得程序不能在预订平台运行
(2)大小端不对,用arm-linux-readelf -a 查看elf文件的头就可以查看大小端
(3)缺少库,用arm-linux-readelf -d 【编译出来的文件】可以看到它需要什么库文件(但是一般只适用于已经可直接运行的文件)
交叉反汇编器
#arm-linux-objdump -D -S 已经编译出来的文件 >输出文件名(一般用于由非汇编语言生成的可运行文件)
交叉文件转换器
一般的elf文件不能直接运行,一般情况处理器只能运行二进制文件,只是linux操作系统自带elf文件解析器,所以直接运行的时候能通过,实质上中间由操作系统做了转换工作
#arm-linux-objcopy -O 输出文件的格式 输入文件名 输出文件名