Linux makefile检查所需的最低Linux内核版本

时间:2012-06-21 17:42:20

标签: linux makefile

我有一个linux makefile需要在2个不同的内核版本上编译。 makefile不是从automake / autoconf生成的。

C代码已经使用宏来为不同的内核版本生成不同的代码,但是makefile中的某些功能也需要进行调整。

makefile中有没有办法:

if (kernel_version > 2.6.30)
    newer_kernel = 1
else
    newer_kernel = 0
endif

1 个答案:

答案 0 :(得分:1)

好吧,我可以想到用bash做一个快速的方法:

KERNEL_VERSION=`uname -r`
HIGHER_VERSION=`echo -e "$KERNEL_VERSION\n2.6.30" | sort -g -t '.' | tail --lines=1`
if [ "$HIGHER_VERSION" == "2.6.30" ]
   # its an older kernel
else
  # its a newer kernel
fi

基本上,你使用uname获取当前内核的版本,然后使用sort将其与2.6.30进行比较(-g标志启用数字排序,-t '.'表示使用点作为字段分隔符),然后使用tail来确定列表中哪两个版本更高。不是一个美丽的解决方案,但它会工作。

您可以将其放入单独的脚本中或直接放入makefile配方