BFD庫(二進制檔案描述庫)是GNU專案用於解決不同格式的目標文件的可移植性的主要機制。到2003年為止,它支援25種不同CPU體系結構上的大約50種檔案格式。
原作者 | 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-bit和64-bit數據之間的正確轉換,和重定位入口項所指定的定址算術的細節。
儘管BFD最初設計成為可以被各種工具使用的通用庫,頻繁需要修補API來容納新系統的功能,傾向於限制了它的使用[2][3][4];BFD的主要用戶是GNU組譯器(GAS),GNU連接器(GLD),和其他GNU二進制實用程式("binutils")工具,和GNU除錯器(GDB)。因此,BFD不單獨發行,總是包括在binutils和GDB發行之中。不論如何,BFD是將GNU工具用於嵌入式系統開發的關鍵部件。
BFD庫可以用來讀取核心轉儲的結構化數據。
參考文獻
外部連結
參見
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.