linux 内核编译问题汇总
一、编译设备树时找不到设备树包含的头文件
设备树包中包含的头文件会到kernel/scripts/dtc/include-prefixes/dt-bindings目录下去查找(新版本内核),而dt-bindings目录是软链接到kernel/include/dt-bindings目录下的。include-prefixes下的其它目录也都是软连接,如下所示
如果kernel在用svn上传或则检出是在windows下操作,则这些软连接会丢失,导致找不到设备树中包含的头文件。所以代码的上传和检出在windows下操作,尤其是linunx这种庞大的代码。
二、net/netfilter/xt_connmark.c:16:10: fatal error: linux/netfilter/xt_connmark.h: No such file or directory #include <linux/netfilter/xt_connmark.h>
找不到头文件xt_connmark.h,从kernel/include/linux/netfilter目录中确实没有xt_connmark.h头文件,但是这个头文件不是在这个目录中,实际是在kernel/include/uapi/linux/netfilter目录中查找的,但是这个目录中有两个这样的头文件,一个是大写的一个是小写的,windows下相同文件夹名不同大小写也认为是相同文件,比如aa.txt和AA.txt在windows下就会认为是相同文件,在linux下不会。如果kernel是在windows下上传或则检出遇到文件名相同大小写不同的文件就会出错,如下所示:
xt_connmark.h文件为了不与xt_CONNMARK.h文件重名,windows下自动加了编号,或则会丢失一个。