+ -
当前位置:首页 → 问答吧 → linux 2.4的核下的第一个驱动遇到的困难和config.h文件有关

linux 2.4的核下的第一个驱动遇到的困难和config.h文件有关

时间:2008-01-06

来源:互联网

是我的第一个驱动,编了一天都没找到处理方法:
在驱动程序中我包含了必须的文件
#include <linux/module.h> //所有模块都需要的头文件
我的源代码解压后放的路径是 /usr/src/linux
然后编译的错误提示是:
/usr/src/linux/include/linux/config.h 中所引用的<linux/autoconfig.h>不存在
我查了下..确实在linux的源代码中不存在autoconfig.h
所以很郁闷是哪里错了

作者: fxieg   发布时间: 2008-01-06

你的 makefile 是什么样子的?

作者: pottichu   发布时间: 2008-01-06

**********内核的版本是
  2.48.18.3

********make file 是这个样子的/usr/src/linux/是我解压后的内核源码的地方
gcc -D __KERNEL__ -D MODULE -D LINUX -I/usr/src/linux/include -o test.o test.c 

********提示的错误是:
  :NO such file or directory
  In file included from /usr/src/linux/include/linux/config.h: 4,
  from test.c:9:  
  /usr/include/linux/autoconf.h:1:2#error Invalid kernel header included in user space

********下面是我的test.c文件的内容

//开始例行公事
#ifndef __KERNEL__ 
# define __KERNEL__ 
#endif 
#ifndef MODULE 
# define MODULE 
#endif 

#include <linux/config.h> 
#include <linux/module.h> 

MODULE_LICENSE("GPL"); 
#ifdef CONFIG_SMP 
#define __SMP__ 
#endif 
// 结束例行公事 

#include <linux/kernel.h> // printk()在这个文件里 

static int init_module()

printk("Hello,World!\n"); 
return 0; /* 如果初始工作失败,就返回非0 */ 


static void cleanup_module()

printk("Bye!\n"); 


作者: fxieg   发布时间: 2008-01-07

你的 /usr/src/linux/ 有源代码, 但是,你有没有在这个目录下面编译过2.4的内核?
如果没有, 建议你 make menuconfig 一下, 有些配置文件就是这个时候生成的。
/usr/include/linux/autoconf.h:1:2#error Invalid kernel header included in user space 
这个问题,基本上, 你重新编译一下/usr/src/linux/ 目录下的内核就能解决的。

另外, 安装好 linux 以后 /usr/src/kernels/ 目录下应该就有 源代码的, 你应该用该目录下的。
要不然, 即使你编译通过了, 最后 insmode 的时候也可能因为版本不同而加载

作者: pottichu   发布时间: 2008-01-07

真是热心人 I TRY AGAIN THANKS

作者: fxieg   发布时间: 2008-01-07

确实需要 make menuconfig  
但是仍然提示

  :NO such file or directory

请问是怎么回事?谢谢

作者: fxieg   发布时间: 2008-01-07

分特. 
貌似你的程序并不需要包含 
#include <linux/config.h>  

作者: pottichu   发布时间: 2008-01-07

我被搞傻了.刚才那个:NO such file or directory 
的错误找到了 应该和我没关系

我重新进行编译 遇到了新的错误:大意是我缺少main的主函数 我这个晕啊.]
错误提示是这样的
/usr/lib/gcc-lib/i386....../ctr1.o:In function '_start':
/usr/lib/gcc-lib/i386....../ctr1.o(.txt+0x18):undefined reference to 'main'
collect2:ID returened 1 exit status

小猪能给个提示吗 谢谢

作者: fxieg   发布时间: 2008-01-07

需要main函数么。。。。。?


你的内核是你现在的源代码版本编译出来的么?

作者: alaiyeshi   发布时间: 2008-01-07

我的操作流程是这样:
需要重新编译内核吗??我的原始操作流程是这样的:
装好 linux,然后,把源代码解压到/usr/src/linux中,
最后make menuconfig  
然后 ..再写驱动程序..
没有重新编译内核

作者: fxieg   发布时间: 2008-01-07

这个... 建议你先学习以下如何编译内核吧.

http://www.linuxsir.org/bbs/showthread.php?t=212832

作者: pottichu   发布时间: 2008-01-07

这个。。。。还是建议,你先把你内核的代码编译了,引导用你编译的内核,然后再写吧

作者: alaiyeshi   发布时间: 2008-01-07

### 為啥寫2.4的驅動。

驅動和內核版本是相關的 。

作者: agaric   发布时间: 2008-02-02

什么呀

作者: meiZiNick   发布时间: 2008-05-01

touch /usr/include/linux/config.h 就可以

新的内核已经不包含config.h文件了

作者: happyboygd   发布时间: 2011-07-17

热门下载

更多