所以我开始阅读书籍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个解决方案,前两个解决方案对我不起作用(我没有autoconf.h)。第三种解决方案是我头脑中的解决方案。如果有人能解释第3个或有其他解决方案,我会很感激。
由于
答案 0 :(得分: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
如果不存在,则配置内核(然后再次检查)CFLAGS+=-imacros /usr/src/linux/include/generated/autoconf.h
#include <config.h>
。 1“3.11选项控制预处理器,”GCC参考