庫,對於程式設計的人來說,都應該知道。但有很多初學者,及已經工作的朋友對庫的理解還處於書本概念階段,也就是沒有生成和使用過庫。
其實,還有很多朋友不知道printf列印函式是怎麼回事,我們在**中呼叫
printf
函式列印資料時,已經呼叫了標準的「微庫」,這裡可以參看我的文章:關於printf和
scanf
在開發stm32
中的配置和應用
什麼情況下要生成庫?
1.**模組化定型。也就是說模組**的功能在經過無數次驗證,並無誤後,方便團隊的協同開發,這個時候可以將模組**生成庫。
2.提供
sdk給客戶開發。這裡一般是指源**對客戶不具有公開性的原因,包括某些特有演算法、實現特有功能的具體過程等。
生成庫的原則?
簡單來說就是使**結構化、模組化、原始碼不具公開性等。要求**高內聚、低耦合。
keil:project -> options for target -> output 勾選上「
create library
」即可。
iar:project -> options -> general options -> output 勾選上「
library
」即可。
上面keil生成的庫是以「
.lib
」為字尾的檔案,
iar是以「
.a」為字尾的檔案,你們知道他們是靜態庫還是動態庫嗎?
答案是:二者都是靜態庫。
為什麼都是靜態庫呢?
先看一下靜態庫和動態庫的區別就會知道。
簡單的來說二者的區別:
靜態庫:就是在編譯的時候直接將需要的**連線進可執行程式中去;
動態庫:就是在需要呼叫其中的函式時,根據函式對映表找到該函式然後調入堆疊執行。
從上面的描述可以知道,靜態庫是我們mcu開發者常用的一種,而動態庫常用於
linux
、windows
等開發場合。
Linux 靜態庫與動態庫的生成及呼叫
一,庫 一種可執行 的二進位制形式,可以被載入記憶體執行。其中庫分為靜態庫 動態庫 二,靜態庫和動態庫的區別 1 linux 下靜態庫 名字一般為 lib a利用靜態函式庫編譯成的檔案比較大,因為整個 函式庫的所有資料都會被整合進目標 中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支...
2 5 庫檔案的生成及使用
分靜態庫和動態庫 靜態庫 動態庫 動態庫檔案的字尾名為.so,檔名以lib開頭 生成動態庫的方法 gcc shared fpic o 動態庫名 目標檔案1,動態庫的呼叫有兩種方式 隱式呼叫 顯示呼叫。隱式呼叫 方法簡單,呼叫和靜態庫一樣,但是需要把動態庫放在系統能找到的地方 顯示呼叫 include...
靜態庫 a和動態庫 so生成及呼叫
gcc編譯器工具一般位於 usr bin或者 usr local bin目錄,但它會從其它位置執行各種編譯器支援的應用程式,這個位置可能是 usr lib gcc lib 目錄,gnu c c 編譯器的各個工具和gnu專用標頭檔案都儲存在這裡。標頭檔案,一般位於 usr include,包含標頭檔案...