1. 程式人生 > >Linux中的libc和glibc

Linux中的libc和glibc

浮點數 lis open 下載 linux中 red 其中 get 全世界

現在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 個部分,其中包括:

    1. <ctype.h>:包含用來測試某個特征字符的函數的函數原型,以及用來轉換大小寫字母的函數原型;
    2. <errno.h>:定義用來報告錯誤條件的宏;
    3. <float.h>:包含系統的浮點數大小限制;
    4. <math.h>:包含數學庫函數的函數原型;
    5. <stddef.h>:包含執行某些計算 C 所用的常見的函數定義;
    6. <stdio.h>:包含標準輸入輸出庫函數的函數原型,以及他們所用的信息;
    7. <stdlib.h>:包含數字轉換到文本,以及文本轉換到數字的函數原型,還有內存分配、隨機數字以及其他實用函數的函數原型;
    8. <string.h>:包含字符串處理函數的函數原型;
    9. <time.h>:包含時間和日期操作的函數原型和類型;
    10. <stdarg.h>:包含函數原型和宏,用於處理未知數值和類型的函數的參數列表;
    11. <signal.h>:包含函數原型和宏,用於處理程序執行期間可能出現的各種條件;
    12. <setjmp.h>:包含可以繞過一般函數調用並返回序列的函數的原型,即非局部跳轉;
    13. <locale.h>:包含函數原型和其他信息,使程序可以針對所運行的地區進行修改。
    14. 地區的表示方法可以使計算機系統處理不同的數據表達約定,如全世界的日期、時間、美元數和大數字;
    15. <assert.h>:包含宏和信息,用於進行診斷,幫助程序調試。
    上述庫函數在其各種支持 C 語言的 IDE 中都是有的。 你要是使用fopen/memcpy等等這樣標準C的函數,當然在鏈接時使用到標準C庫(ANSI C),如果你使用了read/write這些glibc庫實現的函數,肯定就在鏈接時使用到glibc庫

    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