glibc、uclibc的区别
生活随笔
收集整理的這篇文章主要介紹了
glibc、uclibc的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.Glibc
glibc = GNU C Library
是GNU項(GNU Project)目,所實現的 C語言標準庫(C standard library)。
目前,常見的桌面和服務器中的GNU/Linux類的系統中,都是用的這套C語言標準庫。
其實現了常見的C庫的函數,支持很多種系統平臺,功能很全,但是也相對比較臃腫和龐大。
2.uClibc
一個小型的C語言標準庫,主要用于嵌入式。
其最開始設計用于uClinux(注:uClinux不支持MMU),因此比較適用于微處理器中。
對應的,此處的u意思是μ,Micro,微小的意思。
uClibc的特點:
(1)uClibc比glibc要小很多。
(2)uClibc是獨立的,為了應用于嵌入式系統中,完全重新實現出來的。和glibc在源碼結構和二進制上,都不兼容。
3.EGLIBC
EGLIBC = Embedded GLIBC
EGLIBC是,(后來)glibc的原創作組織FSF所(新)推出的,glibc的一種變體,目的在于將glibc用于嵌入式系統。
EGLIBC的目標是:
(1)保持源碼和二進制級別的兼容于Glibc
源代碼架構和ABI層面兼容
如果真正實現了這個目標,那意味著,你之前用glibc編譯的程序,可以直接用eglibc替換,而不需要重新編譯。
這樣就可以復用之前的很多的程序了。
(2)降低(內存)資源占用/消耗
(3)使更多的模塊為可配置的(以實現按需裁剪不需要的模塊)
(4)提高對于交叉編譯(cross-compilation)和交叉測試(cross-testing)的支持
Eglibc的最主要特點就是可配置,這樣對于嵌入式系統中,你所不需要的模塊,比如NIS,locale等,就可以裁剪掉,不把其編譯到庫中,使得降低生成的庫的大小了。
更多特點,可以去看: Eglibc的特點
【glibc, uClibc, Elibc的淵源/歷史/區別/聯系】
1. 寫程序,需要用到很多c語言的庫函數。所有的庫函數加起來,就是對應的C語言(標準)函數庫。
2. 目前在普通GNU/Linux系統中所用的C語言標準庫,叫做glibc。其功能很全,函數很多,但是代碼太多,編譯出來的函數庫的大小也很大,即資源占用也很多。
3. 而嵌入式系統中,也需要C語言寫代碼實現特定功能,也需要用到C語言函數庫,但是由于嵌入式系統中,一般資源比較有限,所以不適合直接使用(太占用資源的)gLibc。
4. 所以有人就又(沒有參考glibc,而是從頭開始,)重新實現了一個用于嵌入式系統中的,代碼量不是很大的,資源占用相對較少的,C語言函數庫,叫做uClibc。并且,uClibc不支持MMU(內存管理單元)。
5. 而后來,glibc的開發者,又推出個Embedded glibc,簡稱eglibc,其主要目的也是將glibc用于嵌入式領域。
相應最大的改動就在于,把更多的庫函數,改為可配置的,這樣,如果你的嵌入式系統中不需要某些函數,就可以裁剪掉,不把該函數編譯到你的eglibc庫中,使得最終生成的eglibc庫的大小變小,最終符合你的嵌入式系統的要求(不能超過一定的大小),這樣,就實現了,把glibc引用于嵌入式系統中的目的了。
可以簡單的理解為:
glibc,uClibc,eglibc都是C語言函數庫:
1. uClibc是嵌入式系統中用的,glibc是桌面系統用的
2. eglibc也是嵌入式系統中用的,是glibc的嵌入式版本,和glibc在源碼和二進制上兼容。
glibc = GNU C Library
是GNU項(GNU Project)目,所實現的 C語言標準庫(C standard library)。
目前,常見的桌面和服務器中的GNU/Linux類的系統中,都是用的這套C語言標準庫。
其實現了常見的C庫的函數,支持很多種系統平臺,功能很全,但是也相對比較臃腫和龐大。
2.uClibc
一個小型的C語言標準庫,主要用于嵌入式。
其最開始設計用于uClinux(注:uClinux不支持MMU),因此比較適用于微處理器中。
對應的,此處的u意思是μ,Micro,微小的意思。
uClibc的特點:
(1)uClibc比glibc要小很多。
(2)uClibc是獨立的,為了應用于嵌入式系統中,完全重新實現出來的。和glibc在源碼結構和二進制上,都不兼容。
3.EGLIBC
EGLIBC = Embedded GLIBC
EGLIBC是,(后來)glibc的原創作組織FSF所(新)推出的,glibc的一種變體,目的在于將glibc用于嵌入式系統。
EGLIBC的目標是:
(1)保持源碼和二進制級別的兼容于Glibc
源代碼架構和ABI層面兼容
如果真正實現了這個目標,那意味著,你之前用glibc編譯的程序,可以直接用eglibc替換,而不需要重新編譯。
這樣就可以復用之前的很多的程序了。
(2)降低(內存)資源占用/消耗
(3)使更多的模塊為可配置的(以實現按需裁剪不需要的模塊)
(4)提高對于交叉編譯(cross-compilation)和交叉測試(cross-testing)的支持
Eglibc的最主要特點就是可配置,這樣對于嵌入式系統中,你所不需要的模塊,比如NIS,locale等,就可以裁剪掉,不把其編譯到庫中,使得降低生成的庫的大小了。
更多特點,可以去看: Eglibc的特點
【glibc, uClibc, Elibc的淵源/歷史/區別/聯系】
1. 寫程序,需要用到很多c語言的庫函數。所有的庫函數加起來,就是對應的C語言(標準)函數庫。
2. 目前在普通GNU/Linux系統中所用的C語言標準庫,叫做glibc。其功能很全,函數很多,但是代碼太多,編譯出來的函數庫的大小也很大,即資源占用也很多。
3. 而嵌入式系統中,也需要C語言寫代碼實現特定功能,也需要用到C語言函數庫,但是由于嵌入式系統中,一般資源比較有限,所以不適合直接使用(太占用資源的)gLibc。
4. 所以有人就又(沒有參考glibc,而是從頭開始,)重新實現了一個用于嵌入式系統中的,代碼量不是很大的,資源占用相對較少的,C語言函數庫,叫做uClibc。并且,uClibc不支持MMU(內存管理單元)。
5. 而后來,glibc的開發者,又推出個Embedded glibc,簡稱eglibc,其主要目的也是將glibc用于嵌入式領域。
相應最大的改動就在于,把更多的庫函數,改為可配置的,這樣,如果你的嵌入式系統中不需要某些函數,就可以裁剪掉,不把該函數編譯到你的eglibc庫中,使得最終生成的eglibc庫的大小變小,最終符合你的嵌入式系統的要求(不能超過一定的大小),這樣,就實現了,把glibc引用于嵌入式系統中的目的了。
可以簡單的理解為:
glibc,uClibc,eglibc都是C語言函數庫:
1. uClibc是嵌入式系統中用的,glibc是桌面系統用的
2. eglibc也是嵌入式系統中用的,是glibc的嵌入式版本,和glibc在源碼和二進制上兼容。
總結
以上是生活随笔為你收集整理的glibc、uclibc的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小鹏 G3i / P5 / P7 宣布降
- 下一篇: 滴滴回归,没有掌声