編譯驅動指定額外的Module.symvers文件


插入內核模塊時,遇到2.6.26之后內核的一個小bug(Bug 12446 - Unable to insmod module. Unknwon symbol)


這是linux kernel 2.6.26 之后版本的bug (詳細描述, 請看http://bugzilla.kernel.org/show_bug.cgi?id=12446)
並且這個bug不會被fix
 
解決辦法是把mod_a的Module.symvers放到mod_b的當前路徑,從而編譯mod_b,符號信息會自動連接進去.
或者在mod_b的makefile中使用KBUILD_EXTRA_SYMBOLS指定mod_a的Module.symvers, 如:
KBUILD_EXTRA_SYMBOLS=/mod_a/Module.symvers
 
編譯mod_b時,搜索Module.symvers的路徑是:
1, kernel source path, e.g. /usr/src/kernels/linux-2.6.28.10
2, makefile中M=所指定的路徑, 它等效於變量KBUILD_EXTMOD的值
3, 變量KBUILD_EXTRA_SYMBOLS的值 


免責聲明!

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



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