我對執行庫的理解

2021-10-12 10:33:26 字數 1269 閱讀 2262

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...