二進制文件描述庫
原作者 | Cygnus Solutions |
---|---|
源代碼庫 | |
編程語言 | C語言 |
類型 | 庫 |
許可協議 | GNU通用公共許可證 |
BFD庫(二進制文件描述庫)是GNU項目用於解決不同格式的目標文件的可移植性的主要機制。到2003年為止,它支持25種不同CPU體系結構上的大約50種文件格式。
歷史
最初,當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-bit和64-bit數據之間的正確轉換,和重定位入口項所指定的尋址算術的細節。
儘管BFD最初設計成為可以被各種工具使用的通用庫,頻繁需要修補API來容納新系統的功能,傾向於限制了它的使用[2][3][4];BFD的主要使用者是GNU匯編器(GAS),GNU連接器(GLD),和其他GNU二進制實用程序("binutils")工具,和GNU調試器(GDB)。因此,BFD不單獨發行,總是包括在binutils和GDB發行之中。不論如何,BFD是將GNU工具用於嵌入式系統開發的關鍵部件。
BFD庫可以用來讀取核心轉儲的結構化數據。
參考文獻
- ^ 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.)
(頁面存檔備份,存於網際網路檔案館) - ^ Langasek, Steve. Re: depending on shared libbfd from binutils-dev. debian-devel (郵件列表). 2005-05-22 [2011-04-03]. (原始內容存檔於2012-03-19) (英語).
- ^ Kuratomi, Toshio. binutils once more. Fedora-packaging (郵件列表). 2010-06-04 [2011-04-03]. (原始內容存檔於2012-03-22) (英語).
- ^ Taylor, Ian. Re: FreeBSD 4.6 - binutils 2.14 installs useless libbfd. binutils (郵件列表). 2003-09-12 [2011-04-03]. (原始內容存檔於2011-12-25) (英語).