C標準庫和Linux系統glibc C執行庫 的關係

時間 2021-06-03 09:21:33

1樓:

C 標準主要由兩部分組成,一部分描述C的語法,另一部分描述C標準庫。C標準庫定義了一組標準標頭檔案,每個標頭檔案中包含一些相關的函式、變數、型別宣告和巨集定義。要在乙個平台上支援C語言,不僅要實現C編譯器,還要實現C標準庫,這樣的實現才算符合C標準。

不符合C標準的實現也是存在的,例如很多微控制器的C 語言開發工具中只有C編譯器而沒有完整的C標準庫.

在Linux平台上最廣泛使用的C函式庫是glibc,其中包括C標準庫的實現,也包括所有系統函式。幾乎所有C程式都要呼叫glibc的庫函式,所以glibc是Linux平台C程式執行的基礎。glibc提供一組標頭檔案和一組庫檔案,最基本、最常用的C標準庫函式和系統函式在libc.

so庫檔案中,幾乎所有C程式的執行都依賴於libc.so,有些做數學計算的C程式依賴於libm.so,以後我們還會看到多執行緒的C程式依賴於libpthread.

so。以後我說libc時專指libc.so這個庫檔案,而說glibc時指的是glibc提供的所有庫檔案.

glibc並不是Linux平台唯一的基礎C函式庫,也有人在開發別的C函式庫,比如適用於嵌入式系統的uClibc.

C 標準庫有哪些問題?

可能是我接觸的語言太少,但凡有string型別,功能卻弱到約等於vector,基本只能當做buffer用的,只有cpp的標準庫。 我來說乙個,C 11新增的std mutex的lock 方法,連續呼叫兩次,在linux平台上會阻塞住執行緒,在windows平台上會直接崩潰。二者行為不一致,不知道這個...

C 中,如何在標準庫的std string和常用庫(Qt,VC等)的QString之間進行選擇?

諸葛不亮 QString和std string根本是兩個東西 QString才是字串處理,內部同一編碼為Unicode,只要字串轉成QString就沒任何擔憂了 std string那個渣渣,只是個封裝成class的char陣列罷了 對照Qt頂多就是QByteArray,還沒那個好用 std str...

你們發現過C 標準庫BUG嗎?

Pluto Hades 標準庫bug以前標準不太標準的時候發現過,年代久遠不好找了 最近發現了gcc內建函式的bug,就是這個 output of instrinsic xgetbv is wrongly overwritten bug是怎麼產生的呢?他們沒寫return!對,實現這個有返回值函式的...