看板 Soft_Job 關於我們 聯絡資訊
版友好。 我參考書上的範例 #include<linux/init.h> #include<linux/module.h> #include<linux/kernel.h> #include <linux/version.h> MODULE_DESCRIPTION("Hello World !!"); MODULE_AUTHOR("Bo-chun Chen "); MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(hello_init); module_exit(hello_exit); 編譯了Hello.ko檔 接著想 insmod ./Hello.ko 出現insmod: error inserting './Hello.ko': -1 Unknown symbol in module 直覺是Hello.c裡面有些東西核心無法辨識? 我的核心版本為 3.8.0-29-generic 請問是哪問題...? 謝謝。 LDD聖經版連 Hello.c 範例程式都不完全, include<linux/kernel.h>還是我加上去的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.21.170.157
gn00618777:另外我的gcc版本4.4 不知道也有沒有關係 01/29 10:56
final01:書上的版本都太久了~LDD有人維護新的範例,可以去找找 01/29 10:59
gn00618777:那麼久了還賣980 無言 01/29 11:01
gn00618777:dmesg [ 1633.919094] Hello: Unknown symbol mcount 01/29 11:02
final01:不會啊~那本的觀念蠻不錯的~ 01/29 11:03
gn00618777:我只看到第二章,我是自己trace過核心makefile過後 01/29 11:20
gn00618777:再看這本書才比較懂,不然很難了解 01/29 11:21
gn00618777:放那麼多天沒人回XD,後來解決了 我發現是編譯器 02/01 15:49
gn00618777:版本不對,編譯核心和模組的的gcc必須版本一致 4.6.3 02/01 15:50