这是一个非常奇怪的错误,出现在 Ubuntu 18.04 上,默认安装的内核版本是 4.15,gcc 是 7.3,在编译内核模块时报错:
In file included from ./include/linux/list.h:9:0, from ./include/linux/module.h:9, from /root/Software/newbbr/tcp_tsunami.c:59: ./include/linux/kernel.h:6:10: fatal error: stdarg.h: No such file or directory #include <stdarg.h> ^~~~~~~~~~ compilation terminated.
gcc 认为找不到 stdarg.h。看这个错误的位置,个人认为应该不是我配置的问题或者是我代码的问题,搜索了一下,也有很多在 4.15 内核上出现的同样错误。目前没有什么很好的解决方案,暂时性的方案是在编译的 Makefile 里面加一行:
ccflags-y=-I/usr/lib/gcc/x86_64-linux-gnu/7/include
如果是 gcc 8,就相应把版本改成 8 就可以了