1. 程式人生 > >對於gcc glibc和binutils升級的次序問題分析與思考

對於gcc glibc和binutils升級的次序問題分析與思考

一、相關知識

    1、GCC是一個用於linux系統下程式設計的編譯器。GCC原本只能處理C語言,但後來擴充套件到可處理C++,之後也可處理Fortran、Pascal、Objective-C、Java、Ada,以及Go與其他語言。它主要完成的工作任務是“預處理”和“編譯”,以及提供了與編譯器緊密相關的執行庫的支援。(注意它所提供的庫,以便於當安裝軟體時,可以知道缺少的是gcc提供的庫還是Glibc提供的庫)。

         GCC安裝後系統包含的內容如下:

 

2、Glibc

        glibc是gnu釋出的libc,即c執行庫。glibc是linux系中最底層的api

幾乎其它任何執行庫都會依賴於glibc。glibc除了封裝linux作業系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。由於 glibc 囊括了幾乎所有的 UNIX 通行的標準,可以想見其內容包羅永珍。Glibc提供的必要功能主要的如下:
(1)string,字串處理
(2)signal,訊號處理
(3)dlfcn,管理共享庫的動態載入
(4)direct,檔案目錄操作
(5)elf,共享庫的動態載入器,也即interpreter
(6)iconv,不同字符集的編碼轉換
(7)inet,socket介面的實現
(8)intl,國際化,也即gettext的實現

(Array)io
(10)linuxthreads
(11)locale,本地化
(12)login,虛擬終端裝置的管理,及系統的安全訪問
(13)malloc,動態記憶體的分配與管理

(14)nis
(15)stdlib,其它基本功能

Glibc安裝後,提供的工具及庫如下:


3、binutils

      binutils提供了一系列用來建立、管理和維護二進位制目標檔案的工具程式,如彙編(as)、連線(ld)、靜態庫歸檔(ar)、反彙編(objdump)、elf結構分析工具(readelf)、無效除錯資訊和符號的工具(strip)等。常,binutils與gcc是緊密相整合的,沒有binutils的話,gcc是不能正常工作的。

  binutils安裝後提供的工具及庫如下:


二、安裝與升級的思考

       (最好是三者版本相匹配)

    1、關於安裝

        從上邊的介紹以及安裝LFS的理解來說,這三個之間的依賴關係非常緊密,很難說清哪個先哪個後,就是雞蛋與雞的問題。但是,安裝的時候肯定是要藉助於另外的系統或者是工具鏈(gcc,glibc,binutils以及核心標頭檔案)。如果是這樣的話,就好辦了,一般是這樣的順序:先安裝binutils, 然後Gcc, 內紅標頭檔案,glibc。 最後要注意,要調整安裝的這三個工具(即工具鏈),使gcc和binutils依賴glibc。

     2、關於升級

             升級的話,需要哪個直接安裝就可以了,但是一定要注意,安裝之後一定要調整好三者之間的依賴關係,尤其是glibc的安裝和依賴關係的調整如果升級兩個以上軟體,則要參考1部分。