使用-I/usr/src/linux-headers-2.6.32-24/include编译,提示好多错误。

内核编译和嵌入式产品的设计与开发
回复
noreasona
帖子: 26
注册时间: 2010-04-01 17:23
送出感谢: 0
接收感谢: 0

使用-I/usr/src/linux-headers-2.6.32-24/include编译,提示好多错误。

#1

帖子 noreasona » 2010-09-26 10:05

最近在学习Linux程序设计第三版里面的设备驱动程序,在编译第一个例子时,出现了问题。

例子的源代码如下:
#include <linux/module.h>

#if defined(CONFIG_SMP)
#define _SMP_
#endif

#if defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
#include <linux/modversions.h>
#endif

#include <linux/kernel.h>

static _init int init_module(void)
{
printk(KERN_DEBUG, "Hello, kernel!\n");
return 0;
}

static _exit void clean_module(void)
{
printk(KERN_DEBUG, "Good-bye, kernel!\n");
}
书上编译用的命令如下:gcc -D_KERNEL_ -I/usr/src/linux/include -DMODULE -Wall -O2 -c hello.c -o hello.o 但是我在/usr/src下面没有linux文件夹,
所以我改为gcc -D_KERNEL_ -I/usr/src/linux-headers-2.6.32-24/include -DMODULE -Wall -O2 -c hello.c -o hello.o
但是编译后好多头文件提示出了好多的错误,例如:
/usr/src/linux-headers-2.6.32-24/include/linux/seqlock.h:86: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘unsigned’
/usr/src/linux-headers-2.6.32-24/include/linux/seqlock.h:106: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘int’
上网查了,没找到解决方法,还请高人指点,谢谢!
头像
mbsfpweike
帖子: 11
注册时间: 2010-09-26 9:00
送出感谢: 0
接收感谢: 0

Re: 使用-I/usr/src/linux-headers-2.6.32-24/include编译,提示好多错误。

#2

帖子 mbsfpweike » 2010-10-09 8:33

有这样的一种可能:
第三版里面的设备驱动程序中使用的内核版本不是你当前的内核版本2.6.32-24,这样引起的错误可想而知,有可能有些定义在新版本的内核中取消了,要注意.
漫步随风飘-weike
回复

回到 “内核及嵌入式开发”