[求助]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内核源代码,配置了内核并修改了头文件路径。 2.6和2.4的区别很大。
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=42871 谢谢版主回复!
不过问题是,magic linux 1.2 beta 4 的 /lib/modules/`uname -r`/build 指向的是一个不存在的目录!是不是制作小组没有把编译好的内核的所有内容都刻到光盘的映像里?
看来还是要自己编译一个2.6.9的内核并安装后才行了? 谢谢版主回复!
不过问题是,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. 楼上的图很漂亮啊! 编译通过,不过insmod的时候没有显示hello world,rmmod的时候也是如此,这时为什么呢? cat /proc/kmsg就能看到了。
页:
[1]