当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 再问debian内核源码的问题!郁闷死了
帖子发表于 : 2005-09-05 22:56 

注册: 2005-08-30 13:10
帖子: 20
送出感谢: 0 次
接收感谢: 0 次
我在各位的指导下,下了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那么清晰!
求大虾们指点啊。。。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 再问debian内核源码的问题!郁闷死了
帖子发表于 : 2005-09-06 17:03 

注册: 2005-09-06 16:48
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
CC=gcc

NeptuneStar 写道:
我在各位的指导下,下了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那么清晰!
求大虾们指点啊。。。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 再问debian内核源码的问题!郁闷死了
帖子发表于 : 2005-09-06 18:40 
头像

注册: 2005-07-01 18:56
帖子: 887
地址: 广州市
送出感谢: 0 次
接收感谢: 3
emacsnw 写道:
CC=gcc

NeptuneStar 写道:
我在各位的指导下,下了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那么清晰!
求大虾们指点啊。。。


真的将g++改为gcc就可以了? 你真的编译过这个示例吗? 如果你真的成功编译这个示例,能贴一下如何操作吗?
我将g++改为gcc并用了几个不同版本的内核头文件都还是出现以上一大堆编译出错!!(不是楼主的代码问题,在其它linux系统中编译可以通过)!


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2005-10-08 18:47 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
使用
INCLUDE=-I/usr/src/linux-headers-2.4.27-2-386/include/
应该就没问题了。


_________________
用心×恒 | 豆瓣 | 门户 | Blog


最后由 leal 编辑于 2005-10-08 19:41,总共编辑了 1 次

页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2005-10-08 18:48 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
或者#sudo apt-get install linux-headers-`uname -r`
安装自己所用内核的头文件。


_________________
用心×恒 | 豆瓣 | 门户 | Blog


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2005-10-08 19:15 

注册: 2005-05-07 23:57
帖子: 3025
送出感谢: 0 次
接收感谢: 0 次
顶一下,对此问题感兴趣。


_________________
独自看一看大海
总想起身边走在路上的朋友
Lenovo E290-420[Celeron-M420/256M/60G/Intel GMA950]


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2005-10-08 19:40 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
yongyi 写道:
顶一下,对此问题感兴趣。


我在自己的系统上sudo apt-get install linux-headers-`uname -r`安装内核头文件后,用INCLUDE=-I/usr/src/linux-headers-2.6.10-5-386/include/进行编译,没有任何出错,可生成hello.o。相信针对2.4.27-2头文件,INCLUDE=-I/usr/src/linux-headers-2.4.27-2-386/include/也没问题。

用gcc编译。


_________________
用心×恒 | 豆瓣 | 门户 | Blog


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2005-10-08 20:51 

注册: 2005-05-17 14:45
帖子: 334
送出感谢: 0 次
接收感谢: 0 次
:( ,都没有看明白,自己试试先。


_________________
现在还是在学java!


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2005-10-08 21:14 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
http://www.linuxfans.org/nuke/modules.p ... c&t=114089
这儿有个2.6下的内核模块编译,2.6和2.4上内核模块编写有很大区别。


_________________
用心×恒 | 豆瓣 | 门户 | Blog


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2005-10-08 21:20 
头像

注册: 2005-07-01 18:56
帖子: 887
地址: 广州市
送出感谢: 0 次
接收感谢: 3
:o 是的, 2.6中有的头文件而2.4中不一定有。


_________________
I will be back!


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2005-10-08 21:32 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
不只是头文件,是外部内核模块的整个编写方法和代码布局有很大的不同。

所以我按7楼所列方法编译“成功”后,hello.o无法在2.6内核中运行。


_________________
用心×恒 | 豆瓣 | 门户 | Blog


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2006-11-26 3:34 

注册: 2006-10-11 19:09
帖子: 24
送出感谢: 0 次
接收感谢: 0 次
原来在ubuntu 下编译模快要加上INCLUDE=的,难怪我以前编译的时候也出现了一大堆的错误!


_________________
热爱开源……


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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