久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > kernel – 嘗試加載usbhid.ko時,“ module_layout沒有符號版本”

kernel – 嘗試加載usbhid.ko時,“ module_layout沒有符號版本”

發布人:電子禪石 時間:2020-06-24 來源:工程師 發布文章
問題描述

我正在嘗試為usbhid.ko構建自己的模塊,但是在編譯之后,無法加載該模塊。 dmesg說是no symbol version for module_layout。我想知道是什么問題?我已經使用過Ubuntu提供的內核源代碼,并且還要確保內核版本相同。


最佳回答

具體來說,問題是在構建模塊時,內核源代碼樹可能缺少Modules.symvers文件。當您構建模塊時,kbuild系統實際上會警告您。如果缺少Modules.symvers,您將看到:

Warning: Symbol version dump /usr/src/linux-2.6.34-12/Modules.symvers            is missing; modules will have no dependencies and modversions.

如果您的內核啟用了CONFIG_MODVERSIONS,則在構建驅動程序的modpost階段,它將使用-m選項運行scripts /mod /modpost。如果您勇敢地看一下scripts /mod /modpost.c源代碼,您會看到-m選項添加了vmlinux中的_module_layout_符號,但是,如果您的內核中沒有Modules.symvers,您將無法獲得該符號的CRC值,并最終收到此錯誤消息。

因此,有兩種解決方法。


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞:

相關推薦

技術專區

關閉