C語言學習篇(30)——ARM Keil製作靜態鏈接庫

引言

上一篇我們講解了如何在gcc環境下製作靜態鏈接庫,以及如何調用我們生成的庫。今天我們來講講如可在KEIL中製作靜態庫,相信很多玩過單片機,尤其是STM32的小夥伴對KEIL不陌生吧。 如果你對gcc中工具鏈不熟悉,那麼Keil的方式製作庫也不失為一種選擇,尤其習慣在Windows開發的小夥伴們。這裡需要說明的是在linux中靜態庫的後綴是.a,而在Window下後綴為.lib,大家日後看到這兩者格式心中應該有數,都是靜態庫。好了,進入正題~

在Keil IDE中製作靜態庫

第一步,我們先創建項目工程,是為了之後編譯生成靜態庫的提供環境,這裡我以stm32f103zet(無所謂什麼芯片型號)為例,如果熟悉工程創建工作,可以直接跳到第二步哦~

打開Keil IDE, 點擊上方工具欄中“Project”, 選擇第一個“New uVision Project...”, 如下圖:

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

然後點擊“魔術棒”, 然後隨意選擇一款芯片型號,這裡以STM32F103Z(這是我學STM32第一款型號,滿滿的回憶~)

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

第二步,創建我們.c源文件 和.h頭文件,在.c中實現具體功能函數,並在.h中聲明這些函數原型,之後我們生成庫後,發佈給他人使用時,只需要提供.lib庫文件和.h頭文件即刻。

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

這裡我們還是簡單實現了加減乘除計算,大家可以根據自己的實際需求來實現具體的功能代碼喲~

第三步, 將上面的.c和.h文件添加到工程中,右擊左側欄“Target1”, 選擇“Manage Project Items...”


C語言學習篇(30)——ARM Keil製作靜態鏈接庫

點擊“Add Files...” 添加我們的.c和.h文件,如下圖所示:

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

第四步,生成我們的靜態鏈接庫,點擊“魔術棒(option for Target)”, 然後勾選“Create Library...”,

並在“Name of Executable”欄中輸入自定義的庫名,具體如下圖:

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

第五步,就是編譯生成我們的靜態庫拉,點擊“Buile”, 無錯誤無警告,並在我們的工程路徑下的objects(編譯生成的)文件夾生成了"my_lib.lib",即我們製作的靜態庫~

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

使用我們製作的靜態庫

我們找一個STM32的工程(這裡我就不具體介紹如何創建了,直接引用正點原子的示例工程,大家可以百度下載或者私信我都可以),並把製作的靜態庫my_lib.a和對應的test.h頭文件拷貝新的工程路徑下,並添加到工程中:

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

然後我們在主函數main中調用庫的一些函數,以驗證我們製作的靜態庫是否可行

C語言學習篇(30)——ARM Keil製作靜態鏈接庫


然後點擊編譯,發現無錯誤無警告,接著我們軟件仿真運行下,看看結果:

C語言學習篇(30)——ARM Keil製作靜態鏈接庫

OK,結果與我們預想的完全一致,我們製作靜態庫大功告成咯。

總結

今天我們詳細講解了如何在KEIL製作靜態鏈接庫,熟悉stm32及單片機的小夥伴可以嘗試實踐下哦。結合上一節在gcc製作鏈接靜態庫,相信大家對靜態鏈接庫有了一定的瞭解了,以及如何使用自己製作的庫了,接下來我們會繼續講解如何製作動態鏈接庫,不清楚靜態庫和動態庫的小夥伴可以看看我前面的文章哦。好了,今天的分享就先到這,記得關注,收藏加轉發喲~


C語言學習篇(30)——ARM Keil製作靜態鏈接庫


分享到:


相關文章: