
_START_ARTICLE_
二进制文件描述库
_START_SECTION_
历史
_START_PARAGRAPH_
最初，当Cygnus Solutions公司的David Henkel-Wallace提议开发这样一个库来为公司创造新的商业机遇时，Richard Stallman说这会是一件困难的事情；而David的回复是" it wasn't such a 'Big F*cking Deal'（没什么大不了的）"。这句话的英文缩写BFD便成为了这个库的名称，而“Binary File Descriptor（二进制文件描述）”则是在BFD缩写的基础上发明的。
_START_SECTION_
设计
_START_PARAGRAPH_
BFD通过对目标文件提供公共抽象视图来达成工作。一个目标文件有带有描述信息的一个“头”；可变量目的“段”，每个段都有一个名字、一些属性和一块数据；一个符号表；一组重定位入口项；诸如此类。_NEWLINE_在内部，BFD将数据从抽象视图转换到目标处理器和文件格式所要求的位/字节布局的细节。它的关键服务包括处理字节序差异，比如在小端序主机和大端序目标之间，在32-bit和64-bit数据之间的正确转换，和重定位入口项所指定的寻址算术的细节。_NEWLINE_尽管BFD最初设计成为可以被各种工具使用的通用库，频繁需要修补API来容纳新系统的功能，倾向于限制了它的使用；BFD的主要用户是GNU汇编器（GAS），GNU连接器（GLD），和其他GNU二进制实用程序（"binutils"）工具，和GNU调试器（GDB）。因此，BFD不单独发行，总是包括在binutils和GDB发行之中。不论如何，BFD是将GNU工具用于嵌入式系统开发的关键部件。_NEWLINE_BFD库可以用来读取核心转储的结构化数据。