Linux内核vsnprintf引入头文件编译报错及对应头文件查询
问题解答
1. 默认内核头文件选择
你列出的所有内核头文件均为5.11版本系列,和你当前使用的5.14版本内核完全不匹配,上述所有头文件都不适合设为当前环境的默认头文件。
- 若你需要编译适配当前运行的5.14内核的代码/内核模块,需要先安装与内核版本完全匹配的
linux-headers-5.14.*对应头文件包,再将其设为默认。 - 若你仅需要编译适配5.11系列内核的代码,选择与目标运行内核版本完全匹配的带
generic后缀的头文件即可,例如目标内核为5.11.0-38-generic,对应默认头文件选择linux-headers-5.11.0-38-generic。
2. vsnprintf对应头文件
分两种场景:
- 如果你编写的是内核态代码(例如内核模块),调用内核提供的
vsnprintf需要引入头文件:
注意内核态不要引入用户态的#include <linux/kernel.h>stdio.h等标准C库头文件,二者实现完全独立。 - 如果你编写的是用户态程序,调用glibc提供的
vsnprintf需要引入头文件:#include <stdio.h> #include <stdarg.h>
内容的提问来源于stack exchange,提问作者user786
相关产品推荐
相关产品推荐

