日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]我們知道,當(dāng)使用第三方的代碼時,人家有可能會扔個Lib文件給你.這時候,別人只要提供header文件給你,則你就可以通過Lib文件及header的函數(shù)聲明,對Lib中的函數(shù)進行調(diào)用.在Keil中如果使用ARMCC調(diào)用Lib文件,相信大家都能從

我們知道,當(dāng)使用第三方的代碼時,人家有可能會扔個Lib文件給你.這時候,別人只要提供header文件給你,則你就可以通過Lib文件及header的函數(shù)聲明,對Lib中的函數(shù)進行調(diào)用.在Keil中如果使用ARMCC調(diào)用Lib文件,相信大家都能從網(wǎng)上找到方法.那如果在Keil中使用GCC來鏈接第三方GCC編譯好的Lib文件——".a"應(yīng)該如何呢?在告訴大家方法之前,我們寫個簡單的函數(shù),然后用GCC編譯器編譯產(chǎn)生.a文件,便于我們進行測試.首先,在Keil中配置gcc編譯環(huán)境,這個可以參考我的文章.

Keil5.15使用GCC編譯器編譯STM32工程,里面有交大家配置方法.
接下來,將工程配置成生成庫方式.這個跟Keil ARMCC的方式很像.

最后,寫上自己測試代碼.
庫文件的NiipLib.c文件代碼:

intNiipLib_GetValue(unsignedchar*pBuffer,intnSize){intnIndex=0;for(nIndex=0;nIndex

庫文件的NiipLib.h文件代碼:

#ifdef__cplusplusextern"C"{#endifintNiipLib_GetValue(unsignedchar*pBuffer,intnSize);#ifdef__cplusplus}#endif1234567812345678
點擊編譯,我們可以在編譯輸出目錄下得到"libNiipLib.a"文件.接著,我們就要在另外個工程引用這個庫文件了.將"libNiipLib.a"文件與"NiipLib.h"拷貝到自己新建的或者已存在的項目下面.下面圖片的重點來了,請大家留意一下,開始"找不同"或者"大家來找茬".

細心的人,會發(fā)現(xiàn)為什么我"IncludeLibraries"這個地方,為什么填寫的是"NiipLib"為什么不是"libNiipLib.a"?其實,我開始也填寫"libNiipLib.a",但編譯器老提示無法找到"libNiipLib.a"這個文件.我真的想說FUCK.在網(wǎng)上搜索了一下,發(fā)現(xiàn)GCC有個變態(tài)的情況,叫做"隱式約定命名規(guī)則".什么叫做"隱式約定命名規(guī)則"?用別人的解釋

-ltest 表示要鏈接動態(tài)庫libtest.a文件,這是gcc隱式約定命名規(guī)則,也就是庫名帶lib頭,比如libtest.a,而在鏈接參數(shù)上則不帶,比如-ltest就表示要鏈接libtest.a

而我的理解就是,你要調(diào)用什么.a文件,你只需去掉文件名前綴的"lib"及后綴的".a",就可以了。測試結(jié)果:


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉