keil使用lib時weak函數(中斷服務)的鏈接


使用keil編譯stm32的程序,用lib靜態庫的方式可以將不同代碼風格、不同規范的源代碼集成在一個程序中,也可以實現代碼隱藏的功能。但鏈接lib時,若庫中具有中斷服務函數,則鏈接需要注意。

由於keil中的中斷服務函數帶有weak屬性,鏈接器會在函數中查找是否有此函數,若有則鏈接,若沒有則使用默認函數。靜態庫中帶有中斷服務函數時,若此源文件(編譯庫時用的.c文件)沒有函數被調用,則此文件的函數不會被鏈接,鏈接器也不會在此文件中查找weak函數的實現。這樣就會造成靜態庫中的中斷服務函數無效。

所以在靜態庫中包含中斷服務函數,必須在調用程序中顯式調用此源文件中的某個函數,保證鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM