LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2081|回复: 5

编译ldd书上第三章scull例子时出错

[复制链接]
发表于 2008-3-11 20:07:26 | 显示全部楼层 |阅读模式
我在make书上scull例子的时候, 报错:
   make -C /lib/modules/2.6.23.9/build M=/home/bzw/examples/examples/scull LDDINC=/home/bzw/examples/examples/scull/../include modules
   make[1]: Entering directory `/usr/src/linux-2.6.23.9'
        CC [M]  /home/bzw/examples/examples/scull/main.o
   /home/bzw/examples/examples/scull/main.c:17:26: error: linux/config.h: No such file or directory
   make[2]: *** [/home/bzw/examples/examples/scull/main.o] Error 1
   make[1]: *** [_module_/home/bzw/examples/examples/scull] Error 2   
   make[1]: Leaving directory `/usr/src/linux-2.6.23.9'
   make: *** [modules] Error 2
   
   说是linux/config.h没找到.  但是我用gcc单独编译一个文件没问题啊:
   #include <linux/config.h>
   int main(){}

   有一点可能有问题, 因为初次接触2.6内核驱动编程, 不了解其机制. 书上说需要内核树,  所以我编译内核源代码的步骤如下:
  cd /usr/src/linux-2.6.23.9
   make
   make modules
   make modules_install
   然后就在/lib/modules/2.6.23.9/目录下生成了一些东西(我不知道以上), 我觉得是不是我理解内核树的概念错了啊?
发表于 2008-3-12 20:11:33 | 显示全部楼层
make -C /lib/modules/2.6.23.9/build M=/home/bzw/examples/examples/scull LDDINC=/home/bzw/examples/examples/scull/../include modules

的前提条件是你的内核已经配置好,并且已经编译过(可能有更简单的操作来满足编译模块的要求),因为编译模块要用到的头文件及内核版本号是编译内核的时候才生成的。
回复 支持 反对

使用道具 举报

发表于 2008-3-25 01:46:04 | 显示全部楼层
我用的是ubuntu7.10也出现了这样的问题,后来上网查了一下,原来2.6.22.14把linux/config.h变成了autoconf.h,建立一个softlink就好了。
ln -s autoconf.h config.h
编译是还有一些错误是没有包含一些头文件,我记得有linux/capability.h和linux/sched.h。
回复 支持 反对

使用道具 举报

发表于 2008-4-1 14:08:51 | 显示全部楼层
我以前好像也碰到过,好像是就建立了一个空的config文件就ok了
回复 支持 反对

使用道具 举报

发表于 2008-4-1 14:11:06 | 显示全部楼层
还有就是你的source树建立起来没?前提是你有你所用版本的source树才行
回复 支持 反对

使用道具 举报

发表于 2008-4-1 14:13:22 | 显示全部楼层
给你推荐一个blog上面关于这些写的很全,我以前学这的时候,他就帮了我不少
http://blog.csdn.net/wooin/archive/2007/08/28/1762825.aspx
回复 支持 反对

使用道具 举报

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

本版积分规则

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