uclibc和glibc並不相同,兩者有許多不同之處,而且以下不同有可能給你帶來一些問題。
1. uclibc比glibc小,雖然uclibc和glibc在已有的介面上是相容的,而且採用uclibc編譯應用程式比採用glibc編譯應用程式要更方便,但是uclibc並沒有包括glibc中的所有介面實現,因此有些應用可能在uclibc中不能編譯。
2. uclibc在可配置性上比glibc要好。
3. uclibc並不能保證發布的庫二進位制相容舊版本uclibc庫。當乙個新的版本uclibc庫被發布,則可能需要也可能不需要重新編譯應用程式。
4. 在glibc中呼叫malloc(0),將返回乙個有效的指標,然而在uclibc中呼叫malloc(0),則返回null指標。根據在susv3中關於malloc(0)的行為的定義,兩個庫的實現都是正確的。對於呼叫relloc(null,0),兩個庫的實現也不同。個人感覺glibc的如此實現不是特別安全。glibc中malloc的實現可以通過malloc_check_ 環境變數調節。這個方法主要用於malloc除錯。這些擴充套件的malloc除錯特性在uclibc中是不可用的。在linux上有許多有些的malloc 除錯功能的庫(如:dmalloc,electric fence,valgrind等)比glibc中的擴充套件的malloc除錯功能更好用。因此uclibc中去掉這些功能特性並不會有多大損失。
5. uclibc沒有提供用於資料介面的庫(libdb)。
6. uclibc不支援nss(/lib/libnss_*),在這方面glibc更容易支援不同方式的認證和dns解析。uclibc僅僅支援採用flat口令檔案或者shadow口令檔案儲存授權資訊。如果需要比這些更複雜的的授權,可以編譯安裝pam。
7. uclibc中的libreso
glibc和libc的區別
glibc和libc都是 linux 下的c函式庫,那麼到底有什麼區別呢?見到linux下好多的庫函式,曾經令我困惑,其實他們是有章可循的。libc是linux下的ansi c的函式庫 glibc是linux下的gun c函式庫 ansi c和gnu c有什麼區別呢?ansi c是基本的c語言函式庫...
ifdef和 if的差別
最近專案要從windows平台移植到linux平台,所以做了很多相容性相關的工作。遇到乙個小問題,我想通過win32巨集來區分兩個平台,之前以外win32變數是自己定義到,所以我做了如下宣告 define win32 1 1 windows,0 linux 程式中這樣使用 if win32 1 do...
引用和指標的差別,陣列和指標的差別
一 引用和指標的差別 1 引用並不是物件,它僅僅是為乙個已存在的物件所起的另外乙個名字。必須初始化,並且無法改變它繫結的物件,之後每次使用這個引用都是訪問最初繫結的那個物件。2 指標本身是物件,能夠不用初始化,能夠改變指標指向的物件 二 指標與陣列的差別 指標陣列 儲存資料的位址 儲存資料 間接訪問...