archerzz 发表于 2004-12-9 13:58:45

[求助]Hello World模块载入的错误

最近在网上看了编写内核模块的教程,自己写了一个Hello World模块试试。结果编译通过而insmod失败。
以下是Hello World代码:

#include <linux/kernel.h>
#include <linux/module.h>

int init_module()
{
   printk("Hello, my first module!\n");
   printk("Now running in kernel mod!\n");
   return 1;
}

void cleanup_module()
{
   printk("Now I'm shutting down!\n");
}


这是我的Makefile文件:

CC = gcc
MODCFLAGS = -O2 -Wall -D__KERNEL__ -DMODULE -I /usr/src/linux-2.6.9/include
modu.o: modu.c
$(CC) $(MODCFLAGS) -c modu.c


编译通过后,运行#insmod modu.o   显示:
insmod: error inserting 'modu.o': -1 Invalid module format

请教一下这是什么原因?
ps: 我的Linux是Magic Linux 1.2 beta 4 ,内核是2.6.9,原来用默认的/usr/include头文件路径编译无法通过,提示缺少autoconf.h。查了一下,似乎要配置一下内核才有,所以下载了2.6.9内核源代码,配置了内核并修改了头文件路径。

kakuyou 发表于 2004-12-9 15:33:05

2.6和2.4的区别很大。

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=42871

archerzz 发表于 2004-12-10 15:47:16

谢谢版主回复!
不过问题是,magic linux 1.2 beta 4 的 /lib/modules/`uname -r`/build 指向的是一个不存在的目录!是不是制作小组没有把编译好的内核的所有内容都刻到光盘的映像里?
看来还是要自己编译一个2.6.9的内核并安装后才行了?

Dragonfly 发表于 2004-12-11 02:36:00

谢谢版主回复!
不过问题是,magic linux 1.2 beta 4 的 /lib/modules/`uname -r`/build 指向的是一个不存在的目录!是不是制作小组没有把编译好的内核的所有内容都刻到光盘的映像里?
看来还是要自己编译一个2.6.9的内核并安装后才行了?

u can install a source code from magic linux or recompile u own 2.6.9 one.

sagaeon 发表于 2004-12-11 10:58:13

楼上的图很漂亮啊!

archerzz 发表于 2004-12-17 18:19:42

编译通过,不过insmod的时候没有显示hello world,rmmod的时候也是如此,这时为什么呢?

watercloud 发表于 2004-12-19 12:03:27

cat /proc/kmsg就能看到了。
页: [1]
查看完整版本: [求助]Hello World模块载入的错误