You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

objdump -i未显示全格式,求OUTPUT_FORMAT参数文档及取值

GCC链接器OUTPUT_FORMAT()命令:参数文档与取值说明

一、参数的官方文档参考

OUTPUT_FORMAT()是GNU链接器(ld)的脚本命令,而非GCC原生命令,相关细节需查看GNU ld的官方文档:

  • 本地安装的工具链中,执行man ld并搜索OUTPUT_FORMAT章节,会明确说明参数为BFD(Binary File Descriptor)库支持的目标文件格式名称。
  • 若使用交叉编译工具链,对应工具链的ld手册会包含针对目标架构的格式说明。

二、为什么Windows上objdump -i看不到elf32-littlearm

你当前在Windows上运行的是面向x86/x86_64架构的binutils工具链,默认仅支持本地平台相关的目标格式,不包含ARM架构的格式。要获取ARM相关格式列表,需安装ARM交叉编译版本的binutils(如arm-none-eabi-binutils),安装后再执行objdump -i或ld -V,就能看到elf32-littlearm、elf32-bigarm等ARM专属格式。

三、获取支持的格式列表的通用方法

  • 针对目标架构的交叉工具链中,执行ld -V:会直接输出链接器支持的所有BFD目标格式。
  • 执行objdump -i:按架构分组列出支持的目标格式、架构和机器类型。
  • 部分工具链包含bfdinfo命令:可更详细地列出BFD库支持的所有格式及属性。

四、常见的OUTPUT_FORMAT参数取值示例

不同架构对应的常用格式:

  • ARM架构:elf32-littlearm(小端32位ARM ELF)、elf32-bigarm(大端32位ARM ELF)、armelf_linux_eabi(Linux平台ARM EABI格式)
  • x86/x86_64架构:elf32-i386(32位x86 ELF)、elf64-x86-64(64位x86_64 ELF)
  • RISC-V架构:elf32-littleriscv、elf64-littleriscv
  • 嵌入式场景:binary(纯二进制裸机格式)、srec(S记录格式)、ihex(Intel Hex格式)

五、额外说明

如果链接脚本中未指定OUTPUT_FORMAT(),链接器会自动根据输入文件的格式或目标架构选择默认输出格式。交叉编译特定架构程序时,必须使用对应架构的交叉工具链,否则链接器无法识别该架构的目标格式。

内容的提问来源于stack exchange,提问作者abdo Salm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:55:13