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
    评论
binutils是一个包含了一系列编译器工具的软件包,其中包括了连接器(ld)、汇编器(as)、目标文件处理工具(objcopy、objdump)等等。它提供了一系列用于编译、链接和调试程序的工具,是构建和运行C/C++程序的基础。 gcc8是GNU Compiler Collection(GNU 编译器套件)的一个版本,它是一个支持多种编程语言的编译器套件,其中包括了C、C++、Objective-C、Fortran、Ada等等。gcc8是gcc的一个特定版本,它提供了对C和C++编程语言的支持,是开发C和C++程序的常用选择之一。 binutils和gcc8是紧密相关的工具。binutils提供了一些gcc8编译器需要的辅助工具,比如连接器(ld)用于将目标文件连接成可执行文件,汇编器(as)用于将汇编代码转化为机器码,目标文件处理工具(objcopy、objdump)用于操作目标文件。而gcc8则是用于编译和构建C和C++代码的核心编译器,它会调用binutils提供的工具进行编译、连接等操作。 使用binutils和gcc8,我们可以将C和C++代码编译成可执行文件,进行程序的构建和调试。binutils提供的连接器和汇编器可以将C和C++代码转化为可执行代码,而gcc8作为编译器可以编译C和C++代码,并调用binutils提供的工具进行链接、优化和调试。 总之,binutils和gcc8是程序开发中必不可少的工具。binutils提供了连接器、汇编器和目标文件处理工具等辅助工具,而gcc8则是用于编译C和C++代码的核心编译器,它们共同构成了开发和编译C和C++程序的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值