|
我按照fc6发行注记中的提示,安装了
kernel-2.6.18-1.2798.fc6.src.rpm
生成了原代码树,在如下目录下:
/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/
在/usr/src下建立了一个指向/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/的连接。
然后,用如下命令编译一个测试文件char.c
gcc -c -I/usr/src/linux/include char.c
出现 错误 如下:
-------------------------------------
......................
/usr/src/linux/include/asm/semaphore.h:130: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux/include/asm/semaphore.h: 在函数 ‘down_trylock’ 中:
/usr/src/linux/include/asm/semaphore.h:155: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux/include/asm/semaphore.h: 在函数 ‘up’ 中:
/usr/src/linux/include/asm/semaphore.h:179: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
在包含自 /usr/src/linux/include/linux/module.h:22 的文件中,
从 char.c:4:
/usr/src/linux/include/asm/module.h:65:2: 错误:#error unknown processor family
char.c: 在函数 ‘__exittest’ 中:
char.c:11: 警告:返回了不兼容的指针类型
----------------------------------------------------------------------------------------
有很多这样指向内核原代码的错误。
下面是测试文件 char.c 的内容
------------------------------------------------------
#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include<linux/init.h>
int my_init( void );
int my_exit( void );
module_init( my_init );
module_exit( my_exit );
MODULE_LICENSE( "Dual BSD/GPL" );
int my_init( void ){
printk( "hello" );
return 0;
}
int my_exit( void ){
printk( "exit" );
return 0;
}
-------------------------------------------------------------
向各位高手请教!
先向大家拜年了~ |
|