歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C程序標准及glibc

C程序標准及glibc

日期:2017/3/1 9:33:54   编辑:Linux編程

1、ANSI C

是兼容各種操作系統的C標准

2、POSIX標准

兼容了UNIX系統的C標准

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)的支持

【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在源碼和二進制上兼容。

Debian 7.6下升級glibc至2.15 http://www.linuxidc.com/Linux/2014-09/106751.htm

Glibc 的詳細介紹:請點這裡
Glibc 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved