Linux中的libc和glibc
現在centos6.8-x64系統裏的c標準庫已經成了glibc,glibc取代了libc,c標準庫的位置在/lib64/libc.so.6
以下為轉載
一、libc庫
Linux平臺提供的C標準庫包括:
-
一組頭文件,定義了很多類型和宏,聲明了很多庫函數。這些頭文件放在哪些目錄下取決於不同的編譯器,stdarg.h和stddef.h位於/usr/lib/gcc/i486-linux-gnu/4.3.2/include目錄下,stdio.h、stdlib.h、time.h、math.h、assert.h位於/usr/include目錄下。C99標準定義的頭文件有24個,本書只介紹其中最基本、最常用的幾個。
-
一組庫文件,提供了庫函數的實現。大多數庫函數在libc共享庫中,有些庫函數在另外的共享庫中,例如數學函數在libm中。在第 4 節 “共享庫”講過,通常libc共享庫是/lib/libc.so.6。
-
ANSI C 函數庫是基本的 C 語言函數庫,包含了 C 語言最基本的庫函數。這個庫可以根據頭文件劃分為 15 個部分,其中包括:
- <ctype.h>:包含用來測試某個特征字符的函數的函數原型,以及用來轉換大小寫字母的函數原型;
- <errno.h>:定義用來報告錯誤條件的宏;
- <float.h>:包含系統的浮點數大小限制;
- <math.h>:包含數學庫函數的函數原型;
- <stddef.h>:包含執行某些計算 C 所用的常見的函數定義;
- <stdio.h>:包含標準輸入輸出庫函數的函數原型,以及他們所用的信息;
- <stdlib.h>:包含數字轉換到文本,以及文本轉換到數字的函數原型,還有內存分配、隨機數字以及其他實用函數的函數原型;
- <string.h>:包含字符串處理函數的函數原型;
- <time.h>:包含時間和日期操作的函數原型和類型;
- <stdarg.h>:包含函數原型和宏,用於處理未知數值和類型的函數的參數列表;
- <signal.h>:包含函數原型和宏,用於處理程序執行期間可能出現的各種條件;
- <setjmp.h>:包含可以繞過一般函數調用並返回序列的函數的原型,即非局部跳轉;
- <locale.h>:包含函數原型和其他信息,使程序可以針對所運行的地區進行修改。
- 地區的表示方法可以使計算機系統處理不同的數據表達約定,如全世界的日期、時間、美元數和大數字;
- <assert.h>:包含宏和信息,用於進行診斷,幫助程序調試。
GNU C 函數庫是一種類似於第三方插件的東西。由於 Linux 是用 C 語言寫的,所以 Linux 的一些操作是用 C 語言實現的,因此,GUN 組織開發了一個 C 語言的庫 以便讓我們更好的利用 C 語言開發基於 Linux 操作系統的程序。不過現在的不同的 Linux 的發行版本對這兩個函數庫有不同的處理方法,有的可能已經集成在同一個庫裏了。
glibc下載地址:http://mirror.hust.edu.cn/gnu/
glibc是linux下面c標準庫的實現,即GNU C Library。glibc本身是GNU旗下的C標準庫,後來逐漸成為了Linux的標準c庫,而Linux下原來的標準c庫Linux libc逐漸不再被維護。Linux下面的標準c庫不僅有這一個,如uclibc(https://www.uclibc.org/)、klibc,以及上面被提到的Linux libc,但是glibc無疑是用得最多的。glibc在/lib目錄下的.so文件為libc.so.6。
Linux中的libc和glibc