cross-arm-eabi-gcc用法

本文介绍如何使用arm-linux-objdump进行ARM程序的反汇编,包括从C语言生成的文件、ELF文件及二进制文件的反汇编方法。同时,还讲解了如何利用elf阅读器查看程序信息,以及编译时使用不同选项的意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1:怎么反汇编用arm-gcc  file.c –o Target 生成的文件,arm-linux-objdump –D –S hello,使用arm-linux-objdump –D –S hello > log可以把信息输出到log文件。使用技巧:

可以看到c语言对于的汇编:

1.2:怎么反汇编elf文件:arm-linux-objdump –D elf_file > dis_file

1.3:怎么反汇编二进制文件:arm-linux-objdump –D –b binary –m arm bin_file > disfile

 

2:elf阅读器查看程序信息:

arm-linux-readelf –a hello

显示的有用的信息:

Machine: ARM表示,该程序是用于arm机器的,

上面的Little endian 表示该程序是用于小端格式,一般的工具链都是小端格式,像TI的芯片采用的是大端格式,这个时候, 应该换一个大端交叉工具链。

关于-d选项

-d选项可以查看hello用了哪些共享库, 有些程序运行不起来,就是应为,lib目录没有共享库,但是编译又是没错误的。解决的办法就是copy该库到lib目录,或者,使用静态编译如:

静态编译后, -d选项看不到程序使用的共享库(也叫动态库)

 

3:关于编译时的选项-nostdlib ,不连接系统标准启动文件,和标准库文件,只把指定文件给连接器, 一般用来编译bootloader程序

4:在gcc命令前 加-v可以看到编译的详细过程,

5:-shared选项用于生成一个共享OBJ文件(也叫共享库文件)。只有部分系统支持该选项:

Gcc –c –o sub.o sub.c

Gcc –shared –o sub.,a sub.o

       6:-T选项用于指定代码段,数据段,bss段的起始地址,也可指定一个连接脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值