QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1027|回复: 3

再问debian内核源码的问题!郁闷死了。

[复制链接]
发表于 2005-9-5 22:16:27 | 显示全部楼层 |阅读模式
我在各位的指导下,下了kernel-source-2.4.27,kernel-headers-2.4.27-2-386
结果在/usr/src下有了kernel-source-2.4.27,kernel-headers-2.4.27-2,kernel-headers-2.4.27-2-386几个文件夹,为什么会有两个kernel-headers呢?后来我写了个简单的模块程序:
#include <linux/module.h>
int init_module(void)
{
        printk("Hello,world!\n");
        return 0;
}
void cleanup_module(void)
{
        printk("Bye!\n");
}
它的makefile如下:
CC=g++
INCLUDE=-I/usr/src/kernel-source-2.4.27/include/
CFLAG=-D__KERNEL__ -DMODULE -Wall -O2 -g
hello.o:hello.c
        $(CC) $(INCLUDE) $(CFLAG) -c hello.c

结果出了很多错:

g++ -I/usr/src/kernel-source-2.4.27/include/ -D__KERNEL__ -DMODULE -Wall -O2 -g -c hello.c
In file included from /usr/include/asm/system.h:5,
                 from /usr/src/kernel-source-2.4.27/include/linux/spinlock.h:6,
                 from /usr/src/kernel-source-2.4.27/include/linux/module.h:12,
                 from hello.c:1:
/usr/src/kernel-source-2.4.27/include/linux/kernel.h:75: error: type specifier
   omitted for parameter `size_t'
/usr/src/kernel-source-2.4.27/include/linux/kernel.h:75: error: parse error
   before `,' token
/usr/src/kernel-source-2.4.27/include/linux/kernel.h:77: error: type specifier
   omitted for parameter `size_t'
/usr/src/kernel-source-2.4.27/include/linux/kernel.h:77: error: parse error
   before `,' token
In file included from /usr/src/kernel-source-2.4.27/include/linux/spinlock.h:6,
                 from /usr/src/kernel-source-2.4.27/include/linux/module.h:12,
                 from hello.c:1:
/usr/include/asm/system.h:246: error: parse error before `new'
/usr/include/asm/system.h: In function `long unsigned int __cmpxchg(...)':
/usr/include/asm/system.h:249: error: `size' undeclared (first use this
   function)
/usr/include/asm/system.h:249: error: (Each undeclared identifier is reported
   only once for each function it appears in.)
/usr/include/asm/system.h:253: error: parse error before `)' token
/usr/include/asm/system.h:259: error: parse error before `)' token
/usr/include/asm/system.h:265: error: parse error before `)' token
/usr/include/asm/system.h:269: error: `old' undeclared (first use this
   function)
In file included from /usr/src/kernel-source-2.4.27/include/linux/module.h:13,
                 from hello.c:1:
/usr/src/kernel-source-2.4.27/include/linux/list.h: At global scope:
/usr/src/kernel-source-2.4.27/include/linux/list.h:37: error: parse error
   before `new'
/usr/src/kernel-source-2.4.27/include/linux/list.h: In function `void
   __list_add(...)':
/usr/src/kernel-source-2.4.27/include/linux/list.h:41: error: `next' undeclared
   (first use this function)
/usr/src/kernel-source-2.4.27/include/linux/list.h:41: error: parse error
   before `;' token
/usr/src/kernel-source-2.4.27/include/linux/list.h:44: error: `prev' undeclared
   (first use this function)
/usr/src/kernel-source-2.4.27/include/linux/list.h:44: error: parse error
   before `;' token
/usr/src/kernel-source-2.4.27/include/linux/list.h: At global scope:
/usr/src/kernel-source-2.4.27/include/linux/list.h:55: error: parse error
   before `new'
/usr/src/kernel-source-2.4.27/include/linux/list.h: In function `void
   list_add(...)':
/usr/src/kernel-source-2.4.27/include/linux/list.h:57: error: parse error
   before `,' token
/usr/src/kernel-source-2.4.27/include/linux/list.h: At global scope:
/usr/src/kernel-source-2.4.27/include/linux/list.h:68: error: parse error
   before `new'
/usr/src/kernel-source-2.4.27/include/linux/list.h: In function `void
   list_add_tail(...)':
/usr/src/kernel-source-2.4.27/include/linux/list.h:70: error: parse error
   before `,' token
/usr/src/kernel-source-2.4.27/include/linux/list.h: In function `void
   list_del(list_head*)':
/usr/src/kernel-source-2.4.27/include/linux/list.h:94: error: invalid
   conversion from `void*' to `list_head*'
/usr/src/kernel-source-2.4.27/include/linux/list.h:95: error: invalid
   conversion from `void*' to `list_head*'
make: *** [hello.o] 错误 1
于是我把
INCLUDE=-I/usr/src/kernel-source-2.4.27/include/
改成:-I/usr/src/kernel-headers-2.4.27-2-386/include/和
-I/usr/src/kernel-headers-2.4.27-2/include/
都不行,为什么?
又下了 kernel-patch-debian-2.4.27 kernel-tree-2.4.27两个包,结果/usr/src下只有kernel-patch,后面的kernel-tree不知道那去了,debian下的内核源代码究竟是哪个啊?感觉好乱啊,不想redhat那么清晰!
求大虾们指点啊。。。
发表于 2005-9-8 12:38:50 | 显示全部楼层
你原来的内核的版本号是多少, 如果和你下的src版本不一致的话, make modules是会报错的,
回复

使用道具 举报

 楼主| 发表于 2005-9-8 13:37:02 | 显示全部楼层
我用的debian是2.4.27-2-386啊,我用uname -r查看的哦 !这个多的headers包,究竟哪个是真正的头文件包啊?
回复

使用道具 举报

发表于 2005-9-12 22:43:31 | 显示全部楼层
下了kernel-source-2.4.27

可是看你下的是2.4.27嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-10-2 03:20 , Processed in 0.035988 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表