把編譯好的ko文件加載模塊時出錯:Error: could not insert module hello_world.ko: Invalid module format

編譯一個打印helloworld信息驅動模塊的時候遇到問題:spa

insmod: ERROR: could not insert module hello_world.ko: Invalid module format3d

問題應該是編譯模塊時選擇的Linux頭文件目錄與當前運行的系統版本不匹配,使用命令:uname -r查看當前運行的內核版本,而後選擇正確的Linux頭文件路徑,也能夠下載和機器內核對應的Linux源碼,這樣指定Linux頭文件目錄到指定的源碼目錄就好了。orm

查詢到內核版本信息後,在makefile文件裏把路徑修改一下就能夠make編譯再加載內核模塊了:blog

另外模塊的printk打印的信息不能直接顯示在終端上,能夠使用 dmesg 查看自開機以來的信息就能夠看到printk輸出的信息了,使用dmesg | tail能夠查看最後的幾個消息。使用rmmod 能夠移除安裝了的模塊。get

或者能夠用dmesg 命令查看一下可能出錯的信息:源碼

能夠看出先前的ko文件的模塊版本信息和當前的內核版本信息已經不匹配了,能夠從新編譯下須要加載的ko文件:make helloworld.mk獲得新的ko文件,此時在從新加載模塊就會發現經過了。io

參考文章:編譯

http://stackoverflow.com/questions/21244481/error-using-insmod-could-not-insert-module-hello-world-ko-invalid-module-formaform

相關文章
相關標籤/搜索