身為一個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 則留言:
感谢,挺有用的。
不过图挂了。
張貼留言