实现一个简单的linux内核模块,c – 制作简单的linux内核模块

我正在尝试升级我的守护进程代码,以便它不是一个可执行文件,它将是一个内核模块,但即使使用一个简单的例子我也很困难.

这是我试过的代码:

#include

#include

int init_module(void){

printk("Hello world 1.\n");

return 0;

}

void cleanup_module(void){

printk(KERN_ALERT "Goodbye world 1.\n");

}

因为我知道我不能直接编译代码,所以我采取了一种方法来复制并稍微修改makefile,如下所示:

WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes

INCLUDE := -isystem /lib/modules/`uname -r`/build/include

CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}

CC := gcc

OBJS := ${patsubst %.c, %.o, ${wildcard *.c}}

all: ${OBJS}

然后在命令行上执行“make”,期望安装程序:

这是我的输出:

gcc -O2 -DMODULE -D__KERNEL__ -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /lib/modules/`uname -r`/build/include -c -o d.o d.c

In file included from /lib/modules/2.6.21.5-smp/build/include/asm/thread_info.h:16,

from /lib/modules/2.6.21.5-smp/build/include/linux/thread_info.h:21,

from /lib/modules/2.6.21.5-smp/build/include/linux/preempt.h:9,

from /lib/modules/2.6.21.5-smp/build/include/linux/spinlock.h:49,

from /lib/modules/2.6.21.5-smp/build/include/linux/module.h:9,

from d.c:1:

/lib/modules/2.6.21.5-smp/build/include/asm/processor.h:82: error: 'CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)

/lib/modules/2.6.21.5-smp/build/include/asm/processor.h:82: error: requested alignment is not a constant

In file included from /lib/modules/2.6.21.5-smp/build/include/linux/sched.h:51,

from /lib/modules/2.6.21.5-smp/build/include/linux/utsname.h:35,

from /lib/modules/2.6.21.5-smp/build/include/asm/elf.h:12,

from /lib/modules/2.6.21.5-smp/build/include/linux/elf.h:7,

from /lib/modules/2.6.21.5-smp/build/include/linux/module.h:15,

from d.c:1:

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:33:3: error: #error You lose.

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

/lib/modules/2.6.21.5-smp/build/include/linux/jiffies.h:225:31: error: division by zero in #if

In file included from /lib/modules/2.6.21.5-smp/build/include/linux/module.h:21,

from d.c:1:

/lib/modules/2.6.21.5-smp/build/include/asm/module.h:62:2: error: #error unknown processor family

make: *** [d.o] Error 1

当我只处理两个记录良好的函数时,为什么要得到所有这些错误?我的makefile关闭了吗?请指教?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值