uClibc(輕量級C庫)

2021-05-18 11:07:06 字數 918 閱讀 1471

參考**:http://www.uclibc.org/

gnu的glibc是乙個非常寵大而完整的庫,至少對於嵌入式系統來說,其體積顯得過於大了一些。uclibc的提出較好的解決了這樣乙個問題。uclibc盡可能的相容glibc,大多數應用程式可以在很小或完全不修改的情況下就可能使用uclibc替代glibc。通過uclibc來代替glibc,可以在不改變應用程式功能的前提下,大大減少發布檔案的大小,無論應用程式以靜態鏈結來編譯,還是以動態鏈結形式編譯。 

不過使用uclibc代替並不是簡單的設定一兩個引數就行了,通常需要使用乙個不同的工具集(gcc/binutils等)來編譯源**。手工的構造這樣乙個環境,對於大多數普通程式設計師來說,不一定是一件很簡單的事情,因此,uclibc的開發者創造出乙個叫做buildroot的工具集。buildroot將自動構造編譯基於uclibc**的工具集和uclibc庫,並提供乙個可配置的框架和一些構建乙個基本系統的配置檔案。使用者只需要通過配置選單選擇了相應的目標軟體,buildroot就可以從構建基本工具集開始,一直到最後構建出目標系統所需要的東西,如嵌入式系統常用的基於ext2的initrd,jffs根檔案系統,壓縮的根目錄樹等,這些**都是基於uclibc而不是系統的glibc的。

buildroot對主機系統的要求較小,通常只需要主機系統提供足以構建工具鏈(toolchain)的工具,如gcc/binutils等,當工具鏈編譯完成後,對目標系統需要的原始碼的編譯過程與主機系統的開發工具集基本上就沒有什麼關係了。因此,不同的主機如果能夠通過第一步,編譯完成工具鏈,那麼編譯出來的目標系統的執行**就可以幾乎不存在由於系統引起的差異。這樣,開發人員就可能在各自喜歡的linux發行版上進行開發,而不必擔心出現什麼相容性問題。 

uclibc和glibc也有許多不同之處:

C 公共元件 輕量級AOP庫

aop aspect oriented programming,面向方面程式設計 可以解決物件導向程式設計中的一些問題,是oop的一種有益補充。物件導向程式設計中的繼承是一種從上而下的關係,不適合定義從左到右的橫向關係,如果繼承體系中的很多無關聯的物件都有一些公共行為,這些公共行為可能分散在不同的元...

輕量級重量級

輕量級重量級某種程度上是以啟動程式需要的資源來決定。比如,ejb啟動的時候,需要消耗大量的資源,記憶體,cpu等,所以是重量級。而spring則不,所以是輕量級框架。量級主要是看對容器的依賴性所決定的,依賴性越小,越輕量.ejb往往內部做了很多服務,網上的說法是買一得三 而且你不想要就不行!比方說我...

輕量級容器

什麼是輕量級容器?為什麼我們需要輕量級容器?什麼是輕量級容器 所謂容器 container 指應用 的執行框架。業務物件在容器裡執行,被容器管理。像ejb就是過去管理j2ee業務物件時最常用的容器。任何容器都應該包含如下服務 上面講的是容器核心模組應該提供的服務,但是容器還必須提供其它一些服務,增加...