1. 程式人生 > >c標準基本庫函式:libc、glibc和glib的關係

c標準基本庫函式:libc、glibc和glib的關係

【glibc 和 libc】

glibc 和 libc 都是 Linux 下的 C 函式庫。
libc 是 Linux 下的 ANSI C 函式庫;glibc 是 Linux 下的 GUN C 函式庫。

ANSI C 和 GNU C 有什麼區別呢?

       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 中都是有的。

       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。

檢視當前系統的 glibc 版本的兩種方法:
1.
01 [[email protected] ~]# /lib/libc.so.6
02 GNU C Library stable release version 2.5, by Roland McGrath et al.
03 Copyright (C) 2006 Free Software Foundation, Inc.
04 This is free software; see the source for copying conditions.
05 There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
06 PARTICULAR PURPOSE.
07 Compiled by GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-52).
08 Compiled on a Linux 2.6.9 system on 2013-01-08.
09 Available extensions:
10 The C stubs add-on version 2.1.2.
11 crypt add-on version 2.1 by Michael Glad and others
12 GNU Libidn by Simon Josefsson

相關推薦

c標準基本函式libcglibcglib關係

【glibc 和 libc】 glibc 和 libc 都是 Linux 下的 C 函式庫。 libc 是 Linux 下的 ANSI C 函式庫;glibc 是 Linux 下的 GUN C 函式庫。 ANSI C 和 GNU C 有什麼區別呢?

libcglibcglib關係

轉自: 【glibc 和 libc】 glibc 和 libc 都是 Linux 下的 C 函式庫。 libc 是 Linux 下的 ANSI C 函式庫;glibc 是 Linux 下的 GUN C 函式庫。 ANSI C 和 GNU C 有

C/C++ 取整函式ceilfloortrunc函式

  取整操作是處理浮點型資料常用的操作,C/C++提供了3中取整方式,以供使用—— double floor(double x);   顧名思義,floor函式的功能是向下取整。 double ceil(double x);   ceil的功能是向上取整。 d

C++標準模板(STL)常用演算法

find()      ---algorithm中的函式 find(start,end,value) start搜尋的起點,end搜尋的終點,要尋找的value值 容器的表示方法(只有vector沒有內建find()函式,其他容器都有,其他容器用自己的find()

總結C語言字元檢測函式isalnumisalpha...

  前言:最近一直在刷leetcode的題,用到isalnum函式,用man手冊查找了一下,總共有13個相關函式如下:   #include <ctype.h> int isalnum(int c); int isalpha(int c); int isascii(i

C++ 檔案讀寫函式之——fopenfreadfwrite

(1)fopen()函式:開啟檔案 包含標頭檔案: #include<stdio.h> 格式:FILE * fopen(const char * path,const char * mode) 引數: path:需要開啟的檔案路徑

C++中類成員函式的過載覆蓋隱藏的區別,超清楚!

1.成員函式被過載的特徵: (1)相同的範圍(在同一個類中); (2)函式名字相同; (3)引數不同; (4)virtual 關鍵字可有可無。 2.覆蓋是指派生類函式覆蓋基類函式,特徵是: (1)不同的範圍(分別位於派生類與基類); (2)函式名字相同;

C++標準函式(sortrand等)

STL標準庫裡有許多諸如排序、生成隨機數的函式,使用前包含標頭檔案 #include <algorithm> 排序:sort 這個函式可以傳兩個引數或三個引數。第一個引數是要排序的區間首地址,第二個引數是區間尾地址的下一地址。也就是說

C++標準模板(STL):vectordequelist

之所以把這幾個容器寫在一起,是因為他們都是序列式容器。 序列式容器以線性序列的方式儲存元素(線性結構)。它沒有對元素進行排序,元素的順序和儲存它們的順序相同。以下有幾種標準的序列容器,每種容器都具有不同的特性: vector<T>(向量容器)是一個長度可變的

C++primer筆記-第3章 字串變數陣列(標準型別string)

 標準庫string、vector都是對內建陣列型別的抽象,string支援變長的字串,vector表示可變長的集合。迭代器是string和vector的配套型別,常用於訪問string或者vector中的元素。 string作為標準庫的一部分,定義在名稱空間s

【演算法筆記】第六章C++標準模板(STL)介紹

【演算法筆記】第六章:C++標準模板庫(STL)介紹 標籤(空格分隔):【演算法筆記】 第六章:C++標準模板庫(STL)介紹 第六章:C++標準模板庫(STL)介紹 6.1 vector的常見用法詳解

C++標準模板學習筆記之序列容器(vectorarray)

序列容器以線性序列的方式儲存元素。五種標準的序列容器:array<T,N>,vector<T>,deque<T>,list<T>,forward_list<T>。Arrayarray<T, N>是一個有N

C++標準模板---迭代器介紹(iteratorconst_iterator)

迭代器 概念:C++的一種機制,用來遍歷標準模板庫容器中的元素,是一種"智慧"指標 一、迭代器的特點 迭代器是一種智慧指標,具有遍歷複雜資料結構的能力 不同的容器有不一樣的內部結構,因此會有一樣的迭代器型別 迭代器定義後,並不屬於某一例項容器物件,只要是屬於該迭代器

關於C++標準模板(STL)的一些基本使用

vector vector可以理解成變長陣列,即長度根據需要而自動改變的陣列 標頭檔案:#include <vector> 定義:vector<typename>name; vector內可以通過下標或者迭代器(iterator)訪問(只有vector和string才

STM32筆記4基本函式寫法(結構體指標的應用)

//構建庫函式雛形 //peripheral:外設 #include"stm32f4xx.h" //peripheral #define PERIPHERAL ((unsigned int)(0x40000000)) #define AHB1_BASE ((unsigned

Linux C程式設計學習筆記(2)opencreatclose函式及檔案的建立開啟與關閉

my_create.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include

命令列選項解析函式(C語言)getopt()getopt_long()getopt_long_only

上午在看原始碼專案 webbench 時,剛開始就被一個似乎挺陌生函式 getopt_long() 給卡住了,說實話這函式沒怎麼見過,自然不知道這哥們是幹什麼的。於是乎百度了一番,原來是處理命令列選項引數的,的確,正規點的大型程式一般第一步就是處理命令列引數

c++ 標準模板 STL 演算法之 for_each 函式的使用用法詳解

std::for_each template <class InputIterator, class Function> Function for_each (InputIterator first, InputIterator last, Functi

[C++標準模板自修教程與參考手冊]關於vector

什麼是vector 可以這樣認為,vector就是一個動態的陣列,其中的元素必須具備assignable(可賦值)和copyable(可拷貝)兩個性質。 vector的一些重要的性質 vector支援隨機存取,存取時間為O(1)。 vector的

C語言動態記憶體管理mallocrealloccalloc以及free函式

我們已經掌握的記憶體開闢方式有: int val = 20;//在棧空間上開闢四個位元組 char arr[10] = {0};//在棧空間上開闢10個位元組的連續空間 但是這種開闢空間的方式有兩個特點: 1. 空間開闢的大小是固定的。