当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 编译模块的时候出错
帖子发表于 : 2008-08-27 13:46 

注册: 2008-05-25 20:35
帖子: 241
送出感谢: 0 次
接收感谢: 0 次
代码:
/* hello−1.c − The simplest kernel module.
 */
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_ALERT */
int init_module(void)
{
    printk("<1>Hello world 1.\n");
    // A non 0 return means init_module failed; module can't be loaded.
    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}
.PHONY: clean
clean:
   rm -rf *.o


下面是出错信息
代码:
gcc -O2 -DMODULE -D__KERNEL__ -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /lib/modules/`uname -r`/build/include   -c -o hello-1.o hello-1.c
In file included from /lib/modules/2.6.24-16-generic/build/include/asm/processor.h:4,
                 from /lib/modules/2.6.24-16-generic/build/include/linux/prefetch.h:14,
                 from /lib/modules/2.6.24-16-generic/build/include/linux/list.h:8,
                 from /lib/modules/2.6.24-16-generic/build/include/linux/module.h:9,
                 from hello-1.c:3:
/lib/modules/2.6.24-16-generic/build/include/asm/processor_64.h:79: error: ‘CONFIG_X86_L1_CACHE_SHIFT’ undeclared here (not in a function)
/lib/modules/2.6.24-16-generic/build/include/asm/processor_64.h:79: error: requested alignment is not a constant
/lib/modules/2.6.24-16-generic/build/include/asm/processor_64.h:200: error: requested alignment is not a constant
In file included from /lib/modules/2.6.24-16-generic/build/include/asm/elf.h:8,
                 from /lib/modules/2.6.24-16-generic/build/include/linux/elf.h:6,
                 from /lib/modules/2.6.24-16-generic/build/include/linux/module.h:14,
                 from hello-1.c:3:
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h: In function ‘user_mode’:
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h:50: error: ‘SEGMENT_RPL_MASK’ undeclared (first use in this function)
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h:50: error: (Each undeclared identifier is reported only once
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h:50: error: for each function it appears in.)
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h:50: error: ‘USER_RPL’ undeclared (first use in this function)
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h: In function ‘user_mode_vm’:
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h:54: error: ‘SEGMENT_RPL_MASK’ undeclared (first use in this function)
/lib/modules/2.6.24-16-generic/build/include/asm/ptrace.h:54: error: ‘USER_RPL’ undeclared (first use in this function)
make: *** [hello-1.o] Error 1


搞了几次了,每次都几天,按着网上说的,想重新编译一个新的内核来用,却搞不定,进不了系统,在原来的内核下编译就出现上面的错误。是不是和没建好内核树有关?不重新编译内核的话,可不可以编译模块呢?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-08-27 16:54 
头像

注册: 2007-09-29 3:09
帖子: 5773
送出感谢: 0 次
接收感谢: 3
好多undeclared啊...include没全么?


_________________
HUNT Unfortunately No Talent...


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-08-29 12:44 

注册: 2007-04-07 11:20
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
kernel源码没装吧


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-08-31 15:51 

注册: 2008-08-03 13:10
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
应该是内核树的问题吧。

楼主装的什莫系统呀?我用ubuntu8.04,装完系统后虽然没有完整的内核源码,但编译驱动所需要的部分都给配置好了。直接编译就能通过。

要不就是你那个include路径有问题。

找那本经典的《LINUX设备驱动程序》看看,那书里第二章就有个HELLO WORLD的例子,也有个makefile,用那个例子试试。

恩,或者,在你的程序一开始加上:
#include <linux/init.h>
试试。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-09-01 16:36 

注册: 2008-05-25 20:35
帖子: 241
送出感谢: 0 次
接收感谢: 0 次
解决了
是makefile不对
原来2.6的内核模块的编译和以往的不同的

代码:
obj-m += hello-1.o
all:
   make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
   make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 编译模块的时候出错
帖子发表于 : 2009-04-08 22:46 
头像

注册: 2008-03-17 21:37
帖子: 260
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
一句话惊醒梦中人,谢谢呀!!!


_________________
爱生活,ichaochao......


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译