二进制文件描述库

BFD库二进制文件描述库)是GNU项目用于解决不同格式的目标文件的可移植性的主要机制。到2003年为止,它支持25种不同CPU体系结构上的大约50种文件格式

Binary File Descriptor library
原作者Cygnus Solutions
源代码库 編輯維基數據鏈接
编程语言C语言
类型
许可协议GNU通用公共许可证

历史 编辑

最初,当Cygnus Solutions公司David Henkel-Wallace提议开发这样一个库来为公司创造新的商业机遇时,Richard Stallman说这会是一件困难的事情;而David的回复是" it wasn't such a 'Big F*cking Deal'(没什么大不了的)"。这句话的英文缩写BFD便成为了这个库的名称[1],而“Binary File Descriptor(二进制文件描述)”则是在BFD缩写的基础上发明的。

设计 编辑

BFD通过对目标文件提供公共抽象视图来达成工作。一个目标文件有带有描述信息的一个“头”;可变数目的“段”,每个段都有一个名字、一些属性和一块数据;一个符号表;一组重定位入口项;诸如此类。

在内部,BFD将数据从抽象视图转换到目标处理器和文件格式所要求的位/字节布局的细节。它的关键服务包括处理字节序差异,比如在小端序主机和大端序目标之间,在32-bit64-bit数据之间的正确转换,和重定位入口项所指定的寻址算术的细节。

尽管BFD最初设计成为可以被各种工具使用的通用库,频繁需要修补API来容纳新系统的功能,倾向于限制了它的使用[2][3][4];BFD的主要使用者是GNU汇编器(GAS),GNU连接器(GLD),和其他GNU二进制实用程序("binutils")工具,和GNU调试器(GDB)。因此,BFD不单独发行,总是包括在binutils和GDB发行之中。不论如何,BFD是将GNU工具用于嵌入式系统开发的关键部件。

BFD库可以用来读取核心转储的结构化数据。

参考文献 编辑

  1. ^ Open Sources: Voices from the Open Source Revolution. O'Reilly. January 1999 [2011-11-11]. (原始内容存档于2014-08-27). Gumby began designing the library and discussing the design with Stallman. Stallman said that the job was too difficult—it would require a complete rewrite of all the tools, and it would be too difficult to maintain. Gumby told him it wasn't such a "Big F*cking Deal" and hence named this new creation the BFD library.(We explained to our customers that BFD stood for the binary file descriptor library.) 页面存档备份,存于互联网档案馆
  2. ^ Langasek, Steve. Re: depending on shared libbfd from binutils-dev. debian-devel (邮件列表). 2005-05-22 [2011-04-03]. (原始内容存档于2012-03-19) (英语). 
  3. ^ Kuratomi, Toshio. binutils once more. Fedora-packaging (邮件列表). 2010-06-04 [2011-04-03]. (原始内容存档于2012-03-22) (英语). 
  4. ^ Taylor, Ian. Re: FreeBSD 4.6 - binutils 2.14 installs useless libbfd. binutils (邮件列表). 2003-09-12 [2011-04-03]. (原始内容存档于2011-12-25) (英语). 

外部链接 编辑

参见 编辑