Binutils简介

Binutils简介

Binutils目录结构

├── bfd
├── binutils
├── config
├── cpu
├── elfcpp
├── etc
├── gas
├── gold
├── gprof
├── include
├── intl
├── ld
├── libctf
├── libiberty
├── opcodes
├── texinfo
└── zlib
从目录结构来看,binutils中的大多数组件没有相应的顶层目录,很多都是位于binutils子目录中。Binutils组件内部包含了一些库,这些>库不仅可以在Binutils内部使用,也提供给外部其他项目使用。例如:BFD库也会被gdb调试器调用。库都具备相应的顶层目录。

简单介绍每个目录的作用

  • includel目录:
    该目录是整个Binutils中主要的头文件目录。该目录下一层又包含了gdb,elf,coff,opcode cgens等子目录,分别用于对应组件的头文件支持。
    bfd目录:
  • bfd目录:
    二进制文件描述信息的库,该库包含了处理特定格式的一进制文件的代码,例如ELF、COFF、SEC等。如课需要添加新的可识别目标文件格式,则需要修改该库的代码。
  • opcodes目录
    操作码库,该库指定了如何对cpU指令进行汇编(assemble)和反汇编(disassemble)操作相关信息。
  • cpu目录:
    该目录主要为CGEN工具的使用提供相应的支持。CGEN架构的…cpu.opc文件,生成日标架构对应的汇编器((assemble0、反汇编器
    (disassembler)以及SiM模拟器等。
  • binutils目录
    尽管该日的名字跟顶层目录Binutls重名,但它文际上是Binutils中所有没有自己顶层目录工具的源文什集合,这中包括了诸如
    objcopy、objdump、readelf、ar、c++flit、size、strings等t组件。
  • gas目录:
    GNU的汇编器(assembler)目录,其中与目标架构相关的汇编程序代码保存在gas/config子目录一层中,这些文件都是以tc-<target >.c的形式存在。
  • ld目录:
    GNU的链接器(linker)目录,其中与目标架构相关的文件保存在该目录下emulparams子自录中。
  • gprof目录:
    GNU的分析器(profiler)目录,该目录下不包含任何与目标架构相关的代码或信息。
  • gold目录:
    一款新的GNU链接器,其目的在于替换到旧的d链接器。相对于ld链接器gold链接器具有更快的速度和效率,但是其稳定性不如ld链接器,其功能尚在完善和开发中。
  • elfcpp目录:
    elfcpp是一个C++库,主要用于读取和写入ELF文件信息。目前只有gold链接器会使用到此库。

此外,在Binutils顶层源码目录中,还有一些其他组件的目录。他们本身并不是Binutils的一部分,只是在构建Binutils时需要用到这些组件,包括:

  • intl目录
    GNU gettext库目录,该库来源于gettext工具,具体来说GNU gettext是一组工具,它提供了一个框架来帮助其他GNU软件包生成更多语言信息。
  • libiberty目录
    在POXS标准和glibc库泛应用之前,libiberty是一个GNU的项目。其主要目的在于提供了一整套标准函数的接口,libiberty库最有价值的地方在于其免费的存储管理功能。
  • zilb目录:
    zlibb是提供数据压缩用的函数库,其使用DEFLATE筒法,它提供了一套压缩和解压函数,并能检测解压出来的数据的完整性(integrity)。此外,zilb也支持读写gzip(.gz)的文件。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值