2011年8月16日 星期二

在Keil C中建立library

身為一個IC設計工程師
最怕的莫過於是自己絞盡腦汁寫好的程式
不小心外流出去給別人
就如同灌蟋哥最怕自己的不雅照外流一樣(= =...)
這類型的程式不外乎是硬體描述語言, 韌體, 或是軟體
以硬體描述語言來說, 這類型的code外流的損傷還不至於太大
但對於韌體或軟體而言, 可能影響就不小囉

我們知道在軟體端有所謂的"DLL"檔可以來保護開發者的智材權
但韌體部分呢? 其實也是有的
就是傳說中的obj檔(object file)
或是俗稱的函式庫(library)

假若您的開發環境是在Keil C中
那麼恭喜您, 這篇文章可以幫助您"無痛建立library"

在此, 我們先想像一下, 所需要建立library的情景是如何......

=========== 劇情開始 ===========

某R君在一家科技公司上班, 負責firmware開發
他畢生致力於韌體的最佳化, 並希望利用韌體來為軟體跟硬體間搭起一座友誼的橋樑
(我還"我愛紅娘"咧...)
一天, R君終於寫出一個函式
這個函式是用來計算兩數相加的結果(= =...)
他很想將這功能加到韌體中
但是礙於公司的規定, 以及他自身的想法
他不希望將此source code外留出去給別人(這種code外留出去也不會有人要吧...)
那麼他該怎麼做呢??

=========== 劇情結束 ===========

1. 在Keil C中建立一個project (這是一定要的!!!)

2. 在左側的" Project Workspace "中的" Target 1 "上按滑鼠右鍵, 之後選擇" Options for Target 'Target 1' "

3. 在" Output "的標籤下, 選擇" Create Library "

4. 回到主視窗, 編輯.c檔跟.h檔

5. 之後按下, 記住喔, 千萬不要寫main function喔, 只需要寫你要用的就好!!!

6. Build之後, 應該會產生下列的訊息. 在這裡最好是0 Error (s) 和 0 Warning (s)
不然用了library出錯了就很難改了

7. 接下來我們可以再開一個新的project來測試產生的library能不能用
當然我們要把剛才產生好的library複製到現在新開的project資料夾裡面

8. 然後開始寫main function

9. 在" Project Workspace "中加入剛做好的library


10. 再一次的按下

這時你會發現它不需要func.c也可以通過編譯
這是因為你的libtest.lib已經取代了原來的func.c
如此一來就可以保護好自己的心血結晶囉!!

在此仍是有幾個小地方要提醒各位

1. 欲打包成library的header檔一定要加入header guard, 以防使用時重覆定義

2. 使用library時, 一定要include相對應的header file, 才能正確的使用library

以上教學希望能為各位減輕製作library之苦
下台一鞠躬!!!

1 則留言:

cyl@bf2 提到...

感谢,挺有用的。
不过图挂了。