作者gn00618777 (非常念舊)
看板Soft_Job
標題[討論]自行撰寫模組
時間Wed Jan 29 10:52:42 2014
版友好。
我參考書上的範例
#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