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