【Linux Kernel】源码阅读时的:KERNEL_VERSION 和 LINUX_VERSION_CODE

问题

在看源码时会遇到如下代码:

#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 0, 9)   
    xxxx
#else
    xxxx
#endif

但是这个LINUX_VERSION_CODE找不到是在哪里定义的。

搜索之后发现,LINUX_VERSION_CODE和KERNEL_VERSION这个宏定义,都是在linux源码 include/linux/version.h文件中的。

但是下载linux kernel 源码中么有这个文件???怎么办?

自己创建一个吧。

解决办法

假设当前的内核版本为:4.4.233,LINUX_VERSION_CODE的计算方式如下:

>>> 0x040423
263203

因此,LINUX_VERSION_CODE 就是 263203。

最后创建文件version.h,内容如下,完美解决。

#define LINUX_VERSION_CODE 253203
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
//>>> 0x040423
//263203

PS: 正常来说,这个version.h似乎是在编译内核时产生的, 但是我编译时遇到各种错误,没精力看,暂时就这么解决吧!

参考

https://www.latelee.org/using-gnu-linux/way-to-generate-linux-version.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值