寫在前面 Ⅰ
庫,對于編程的人來說,都應該知道。但有很多初學者,及已經工作的朋友對庫的理解還處于書本概念階段,也就是自己沒有生成及使用過庫。
其實,還有很多朋友不知道printf打印函數是怎么回事,我們在代碼中調用printf函數打印數據時,已經調用了標準的“微庫”,這里可以參看我的文章:關于printf和scanf在開發STM32中的配置和應用
什么情況下要生成庫?
1.代碼模塊化定型。也就是說模塊代碼的功能在經過無數次驗證,并無誤后,方便團隊的協同開發,這個時候可以將模塊代碼生成庫。
2.提供SDK給客戶開發。這里一般是指源代碼對客戶不具有公開性的原因,包括某些特有算法、實現特有功能的具體過程等。
生成庫的原則?
簡單來說就是使代碼結構化、模塊化、源碼不具公開性等。要求代碼高內聚、低耦合。
Keil、IAR如何生成庫? Ⅱ
代碼工程生成庫的過程只需要對工程進行配置即可,這里再簡單講一下過程,其實在我“系列教程”中有相關內容。
Keil:Project -> Options for Target -> Output 勾選上“Create Library”即可。
IAR:Project -> Options -> General Options -> Output 勾選上“Library”即可。
庫在工程的使用方法 Ⅲ
“.Lib”、“.a”這種庫大家可以理解為“.c”,只是它已經經過處理而已。我們只需要像添加“.c”文件,將其添加到工程即可。如下圖,我們將STM32F10x_StdPeriph_Driver標準外設庫生成“STM32F10x_StdPeriph_Driver.a”庫,添加到工程中:
靜態庫和動態庫的區別? Ⅳ
上面Keil生成的庫是以“.Lib”為后綴的文件,IAR是以“.a”為后綴的文件,你們知道他們是靜態庫還是動態庫嗎?
答案是:二者都是靜態庫。
為什么都是靜態庫呢? 先看一下靜態庫和動態庫的區別就會知道。
簡單的來說二者的區別:
靜態庫:就是在編譯的時候直接將需要的代碼連接進可執行程序中去;
動態庫:就是在需要調用其中的函數時,根據函數映射表找到該函數然后調入堆棧執行。
-
mcu
+關注
關注
146文章
17171瀏覽量
351423 -
IAR
+關注
關注
5文章
352瀏覽量
36697 -
模塊化
+關注
關注
0文章
332瀏覽量
21361 -
keil
+關注
關注
68文章
1213瀏覽量
166944
發布評論請先 登錄
相關推薦
評論