交叉工具链

应用硬件平台不同:所用的交叉工具不同 
在linux下通过arm-linux-gcc 编译出来的可执行程序用与在ARM平台下执行 gcc编译出来的程序适用于386平台
解压+配置
解压:tar -xvzf arm-linux-gcc-4.3.2.tgz  -C  /     
修改 /etc/bash.bashrc   
     export PATH=$PATH:/home/linux/arm-2010.09/bin 
     source /etc/bash.bashrc
如果是在64位系统上还要安装32位库  sudo apt-get install ia32-libs

1.交叉编译器   arm-linux-gcc
arm-linux-gcc  --help     
arm-linux-gcc -print-search-dirs 查看头文件目录  库目录

arm-linux-gcc -static -g -O1  hello.c -o hello   //生成的hello是.elf格式的,
-static静态链接、-g 显示调试信息   -O代码优化  -Wall打印出警告信息  -v 观看编译的细节

2.连接器脚本   arm-linux-ld
arm-linux-gcc -Tled.lds -o led.elf  led.o     //-T连接器脚本  脚本文件led.lds

3.ELF文件查看工具  arm-linux-readelf 
arm-linux-readelf -a  hello
查看运行环境arm  大小端(与运行的处理器一致)  
arm-linux-readelf -d  hello   查看库     
file hello

4.反汇编 arm-linux-objdump  (可以将二进制文件和 .elf文件反汇编)
arm-linux-gcc -g hello.c -o hello  //在反汇编中将c语句与汇编代码对应
arm-linux-objdump  -D -S   hello  > dump  //反汇编代码放到dump文件中   hello是.elf文件

 arm-none-eabi-objdump -D -b binary -m arm test.bin > test.dis    

//将.bin文件反汇编     -D反汇编所有段   -b指定目标码格式   -m 指定反汇编目标码使用的架构

 arm-none-eabi-objdump -D test.elf > test.diss    //将.elf文件反汇编



5.文件格式转换   arm-linux-objcopy    elf->2进制文件  (也可以转换为.hex)
arm-linux-objcopy  -O  binary  led.elf (输入文件) led.bin (输出二进制文件)

arm-none-eabi-objcopy -O  binary  test.elf  test.bin   // 将.elf格式文件转换成.bin文件

arm-none-eabi-objcopy -O  ihex  -S  test.elf  test.ihex    

// 将.elf格式文件转换成.hex文件   -S 不从源文件中复制重定位信息和符号信息到目标文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值