庫,對于編程的人來說,都應該知道。但有很多初學者,及已經工作的朋友對庫的理解還處于書本概念階段,也就是沒有生成和使用過庫。
其實,還有很多朋友不知道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等開發場合。
微信搜索“EmbeddDeveloper” 或者掃描下面二維碼、關注,查看更多精彩內容。
新聞熱點
疑難解答