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