【问题标题】:device driver missing config.h设备驱动程序缺少 config.h
【发布时间】:2011-05-24 03:50:45
【问题描述】:

于是我开始看书http://lwn.net/Kernel/LDD3/写设备驱动

问题是这本书使用的是 2.6.10,而我使用的是 2.6.35.X(在 Ubuntu 上)并且缺少“config.h”。我用谷歌搜索了这个问题,结果发现 config.h 被删除了。

http://stephane.lesimple.fr/wiki/blog/kernel_2.6.18_linux_config.h_problem 建议 3 个解决方案,前 2 个对我不起作用(我没有 autoconf.h )。第三种解决方案是我头顶上的解决方案。如果有人能解释第三个或有其他解决方案,我将不胜感激。

谢谢

【问题讨论】:

    标签: c driver device


    【解决方案1】:

    所有 -imacros 文件 和 -include 文件选项在所有 -D 和 -U 选项1 之后处理。

    每个(三个)选项都是一种将 GCC 指向带有预处理器定义列表的文本文件的方法。 要使用选项 3, -imacros a_file ,仍然需要文件 a_file ,(即:autoconf.h),包含宏或配置定义的文件。在这个系统上它是 /usr/src/linux/include/generated/autoconf.h

    l /usr/src/linux
    lrwxrwxrwx 1 root conman 23 Nov 29 19:37 /usr/src/linux -> linux-2.6.35-gentoo-r12
    

    如您所见,该文件可能出现在 2.6.35 中。似乎配置内核可能会生成这个文件;因为这个文件的内容看起来是为当前内核量身定做的。这看起来像一个文件,声明了哪些驱动程序被编译(相对于编译为模块)。

    所以:

    • 首先检查文件find /usr/src/linux/. -name autoconf.h 如果不存在,则配置内核(然后再次检查)
    • 将设备驱动程序的 Makefile 中的 CFLAGS 更改为包含 -imacros /usr/src/linux/include/generated/autoconf.h
      CFLAGS+=-imacros /usr/src/linux/include/generated/autoconf.h
    • 从驱动程序源中注释掉#include <config.h>

    1“3.11 控制预处理器的选项”,GCC 参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 2021-10-05
      • 2015-12-08
      • 2013-06-08
      • 2016-12-14
      • 1970-01-01
      相关资源
      最近更新 更多