当前位置: 技术问答>linux和unix
uSE Linux 10.1下ldd3 hello world例子Invalid module format问题
来源: 互联网 发布时间:2015-12-23
本文导语: 我的系统是SuSE Linux 10.1,kernel version是2.6.16.13 我的hello.c和Makefile都是按照ldd3上来写的。 hello.c的代码如下: #include #include MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, worldn"); return 0; } ...
我的系统是SuSE Linux 10.1,kernel version是2.6.16.13
我的hello.c和Makefile都是按照ldd3上来写的。
hello.c的代码如下:
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, worldn");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel worldn");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile如下:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?=/lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
# $(MAKE) -C /usr/src/linux-2.6.16.13 M=$(PWD) modules
clean:
rm -rf *.o .*.cmd *.ko *.mod.c .tmp_versions *~
endif
我的源码数的路径为/usr/src/linux-2.6.16.13-4-obj/i386/default/
下面是我的一些信息,请帮忙看看,几天了一直没有找到解决方法
#make
make -C /lib/modules/2.6.16.13-4-default/build M=/software modules
make[1]: Entering directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
CC [M] /software/hello.o
Building modules, stage 2.
MODPOST
CC /software/hello.mod.o
LD [M] /software/hello.ko
make[1]: Leaving directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
#insmod hello.ko
insmod: error inserting 'hello.ko': -1 Invalid module format //老是这个问题
#insmod -f hello.ko
insmod: error inserting 'hello.ko': -1 Invalid module format
#cat var/log/message
Nov 5 20:42:45 Love-Linux kernel: hello: disagrees about version of symbol struct_module
#uname -r
2.6.16.13-4-default
#cat /lib/modules/2.6.16.13-4-default/build/include/linux/version.h
#define UTS_RELEASE "2.6.16-default"
#define LINUX_VERSION_CODE 132624
#define KERNEL_VERSION(a,b,c) (((a)
我的hello.c和Makefile都是按照ldd3上来写的。
hello.c的代码如下:
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, worldn");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel worldn");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile如下:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?=/lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
# $(MAKE) -C /usr/src/linux-2.6.16.13 M=$(PWD) modules
clean:
rm -rf *.o .*.cmd *.ko *.mod.c .tmp_versions *~
endif
我的源码数的路径为/usr/src/linux-2.6.16.13-4-obj/i386/default/
下面是我的一些信息,请帮忙看看,几天了一直没有找到解决方法
#make
make -C /lib/modules/2.6.16.13-4-default/build M=/software modules
make[1]: Entering directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
CC [M] /software/hello.o
Building modules, stage 2.
MODPOST
CC /software/hello.mod.o
LD [M] /software/hello.ko
make[1]: Leaving directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
#insmod hello.ko
insmod: error inserting 'hello.ko': -1 Invalid module format //老是这个问题
#insmod -f hello.ko
insmod: error inserting 'hello.ko': -1 Invalid module format
#cat var/log/message
Nov 5 20:42:45 Love-Linux kernel: hello: disagrees about version of symbol struct_module
#uname -r
2.6.16.13-4-default
#cat /lib/modules/2.6.16.13-4-default/build/include/linux/version.h
#define UTS_RELEASE "2.6.16-default"
#define LINUX_VERSION_CODE 132624
#define KERNEL_VERSION(a,b,c) (((a)