|
之前按照Etual热心人提供的在ubuntu下搭建linux设备驱动开发环境,他的步骤是:
$ su root
# apt-get install linux-source-2.6.32
# cd /usr/src
# tar xjf linux-source-2.6.32.tar.bz2
# cd linux-source-2.6.32
# cp ../linux-headers-2.6.32-38-generic/.config .
# make menuconfig
# make -j2
完全是一步步来的,只是内核版本号不同,我下载的版本是2.6.35,下面是/usr/src/目录下的文件:
root@ubuntu:/usr/src# ls
linux-headers-2.6.35-22 linux-source-2.6.35
linux-headers-2.6.35-22-generic linux-source-2.6.35.tar.bz2
编写的是一个简单的helloworld程序,程序如下:
#include</linux/init.h>
#include<linux/module.h>
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);
Makefile如下:
obj-m := hello.o
KERNELDIR ?= /usr/src/linux-source-2.6.35
PWD := $(shell pwd)
all:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
首先,编译能正常通过,就是不能用insmod命令加载,总是出现这个错误:
insmod: error inserting 'hello.ko': -1 Invalid module format
求热心人能帮忙解决下这出了什么问题,不胜感激 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|