002—交叉工具链与使用

是许多工具的集合

交叉编译器:

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     输出文件的格式     输入文件名     输出文件名

你可能感兴趣的:(002—交叉工具链与使用)