在编译和部署Linux Kernel时,会自动生成一个表示kernel版本的文件。
比如我在Yocto中编译一个Linux版本时,在和kernel-source同级的kernel-build-artifacts中,有一个version.h文件:
work-shared/my-machine/kernel-build-artifacts/include/generated/uapi/linux/version.h
#define LINUX_VERSION_CODE 393527
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
#define LINUX_VERSION_MAJOR 6
#define LINUX_VERSION_PATCHLEVEL 1
#define LINUX_VERSION_SUBLEVEL 55
在Kernel编译完成后的,会部署到sysroot中,Linux Kernel的构建目录里有,而且其他package构建目录也有,因为构建时需要引用这个sysroot的头文件。
不过这个文件内容和上面的不一样了:
recipe-sysroot/usr/include/linux/version.h
#define LINUX_VERSION_CODE 393472
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
#define LINUX_VERSION_MAJOR 6
#define LINUX_VERSI