linux系統有自己的底層操作函式,如底層輸入輸出(low-level input/output):
隨便拿個open作說明:int open (const char *filename, int flags, mode t mode);
,如果要完成檔案寫入乙個hello world可不容易,因為我們必須熟悉作業系統中對flags和模式的設定,設定相當麻煩。c標準庫就是完成對這些常見的操作的封裝,當我們使用#include
時,我們就是在使用前輩們給我們封裝好的函式,現在我們只需要使用fopen
開啟檔案,fprintf
輸出文字檔案。這些封裝好的函式被打包成乙個動態庫,叫做執行時庫。程式執行時,將會呼叫這些執行庫中的函式,這就是為什麼我們需要執行庫的原因,如果沒有這些庫,編寫c語言作業系統可不認識。這就是為什麼執行庫總是和作業系統、語言相關。
任何乙個c 程式,它的背後都有一套龐大的**來進行支撐,以使得該程式能夠正常執行。這套**至少包括入口函式,及其所依賴的函式所構成的函式集合。另外包括各種標準庫函式的實現。
這樣的乙個**集合稱之為執行時庫(runtime library),c 語言的執行時庫,稱為 c 執行庫(crt)。 c 執行庫大致包含的功能:
啟動與退出函式
由c 語言標準規定的c 語言標準庫所擁有的函式實現。
i/o 功能的封裝與實現。
堆的封裝和實現
語言中一些特殊功能的實現。
實現除錯功能的**。
在這些執行庫的組成成分中,c語言標準庫佔據了主要地位並且大有來頭。c語言標準庫是c語言標準化的基礎函式庫,我們平時使用的printf、exit等都是標準庫中的一部分。標準庫定義了c語言中普遍存在的函式集合,我們可以放心地使用標準庫中規定的函式而不用擔心在將**移植到別的平台時對應的平台上不提供這個函式[1]。
像是libc、glibc只是兩種執行庫的實現。ubuntu系統中,使用的標準庫實現是glibc[2],他在系統的/lib/x86_64-linux-gnu/libc.so.6
。因為ldd命令是由glibc提供的,所以要檢視版本可以直接
作為乙個動態庫,也會存在版本問題。比如高版本編寫的程式,在低版本執行。解決方法有:
qt為程式提供了介面相關的功能,其功能和libc一樣封裝在乙個執行庫中。
[1]
[2]
[3]
mysql vc執行庫 VC 執行庫安裝
vc 執行庫 visual c 可再發行程式包 是執行使用相應版本的 visual c 開發的應用程式時必要的元件。wampserver內建的apache mysql mariadb和php就依賴vc 執行庫,所以我們需要在電腦上安裝好vc 執行庫,否則無法正常使用wampserver。wampse...
執行庫實現
堆的實現 io與檔案操作 字串相關操作 格式化字串 helloworld程式無須用到的功能就不實現,比如異常 盡量簡化設計,盡量符合c 標準庫的規範 對於可以直接在標頭檔案實現的模組盡量在標頭檔案中實現,以免諸多的類 函式的宣告和定義造成 量膨脹,不便於演示 執行庫 要做到可以在windows和li...
C執行庫 二
任何乙個c程式,它的背後都有一套龐大的 來進行支撐,以使得該程式能夠正常執行。這套 至少包括入口函式,及其所依賴的函式所構成的函式集合。當然,它還理應包括各種標準庫函式的實現。這樣的乙個 集合稱之為執行庫 runtime library 而c語言的執行庫,即被稱為c執行庫 crt 如果擁有visua...