STM32學(xué)習(xí)筆記之Keil工程Lib庫文件的制作和運(yùn)用
最近看了百度手環(huán)開源項(xiàng)目,發(fā)現(xiàn)所有的算法都被封裝成了一個(gè)lib文件在keil中調(diào)用 也是第一次學(xué)習(xí)到。
問題引出:為什么要做成lib庫?
1、有些方案公司為了將自己寫的關(guān)鍵部分源代碼不進(jìn)行公開,但是同時(shí)庫文件又需要讓別人能夠正常調(diào)用,那封裝成lib的格式就是一個(gè)好方法。
2、編譯某些工程文件時(shí)非常耗時(shí),像UCGUI和ST官方的庫時(shí),由于文件眾多,編譯一次可能得1兩分鐘,這時(shí)可以打包成庫,這時(shí)編譯工程時(shí)就不會(huì)再次編譯庫的文件,節(jié)省不少的時(shí)間。
唯一一點(diǎn)不好的是:不能用右鍵go to Definition 'XXX'來直接找到源文件定義了。但是一般別人都是測試好就封裝成lib的
制作方法:以UCGUI為例
第一步:打開一個(gè)測試通過的工程。(如果本來要打包的庫文件里面的代碼有錯(cuò)的話,打包成庫后也是不能用的,這步是關(guān)鍵)
測試沒有問題后將不需要的部分刪除,后如下圖所示
第二步:打開KEILMDK->Project->Option for target...->Output,選 中Create Executable:....選項(xiàng)。
第三步:重新編譯,即可在原本生成Hex文件的目錄下找到*.lib文件。
打開原工程,只需將原來的.c文件移除,添加進(jìn)該.lib文件即可使用(程序調(diào)用要包含lib文件中c文件的所有頭文件)。
特別注意的是:Lib的文件要分的細(xì)一點(diǎn),沒有調(diào)用關(guān)系的兩個(gè)函數(shù)不要放到同一個(gè)C文件中. 沒有調(diào)用關(guān)系的最好是一個(gè)函數(shù)單獨(dú)放在一個(gè).c文件中.這是為了避免在keil中應(yīng)用程序調(diào)用lib庫里出現(xiàn)告警.