ubuntu16.04系统中在/usr/include/linux下有version.h,内容如下
- #define LINUX_VERSION_CODE 263183
- #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
复制代码
LINUX_VERSION_CODE ― 内核版本的二进制表示,主、从、修订版本号各对应一个字节;
KERNEL_VERSION(major, minor, release) - 由主、从、修订版本号构造二进制版本号
当设备驱动需要支持不同的内核时,在编译阶段,内核模块需要知道当前内核版本,然后调用相应的API。
- #include <linux/version.h>
- #if LINUX_VERSION_CODE>= KERNEL_VERSION(x,xx,xx)
- #else
- #endif
复制代码1)包含头文件:linux/version.h
2)使用#if对宏LINUX_VERSION_CODE(当前code所在版本)和待比较的版本“KERNEL_VERSION(x,xx,xx)“比较
在刚获取的源码中linux/下没有version.h文件,需要经过一次编译才会自动生成version.h