我有一个linux makefile需要在2个不同的内核版本上编译。 makefile不是从automake / autoconf生成的。
C代码已经使用宏来为不同的内核版本生成不同的代码,但是makefile中的某些功能也需要进行调整。
makefile中有没有办法:
if (kernel_version > 2.6.30)
newer_kernel = 1
else
newer_kernel = 0
endif
答案 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配方