Linux Kernel版本号后面为什么有加号?Linux Kernel去除版本号后面加号的方法
我们在应用Linux Kernel的过程中常常会碰到版本信息后边发生减号的难题,为什么会如此呢?应当怎么处理呢?由于可能是用户们改动了Linux.git中的文件,下面就来教大伙儿Linux Kernel去除版本信息后边减号的方法。
内核版本号是依据Makefile里给予的数字转化成的。开启Makefile,文件开始可以见到:
1 VERSION = 3
2 PATCHLEVEL = 10
3 SUBLEVEL = 28
4 EXTRAVERSION =
5 NAME = TOSSUG Baby Fish
和内核版本号转化成有关的文件是 scripts/setlocalversion, 在其中有如下所示的一部分脚本制作:
# scm version string if not at a tagged commit
if test “$CONFIG_LOCALVERSION_AUTO” = “y”; then
# full scm version string
res=“$res$(scm_version)”
else
# append a plus sign if the repository is not in a clean
# annotated or signed tagged state (as git describe only
# looks at signed or annotated tags - git tag -a/-s) and
# LOCALVERSION= is not specified
if test “${LOCALVERSION set}” != “set”; then
scm=$(scm_version --short)
res=“$res${scm: }”
fi
fi
假如
CONFIG_LOCALVERSION_AUTO
沒有被配备, LOCALVERSION 都没有标值, 那麼,依据以上的脚本制作, 号就不易被添加了。
具体在编译程序代码的情况下,可以实行:
LOCALVERSION= make
此外,在文件scripts/setlocalversion里边,有一句:
if test -d .git && head=`git rev-parse --verify --short HEAD 2》/dev/null`;
git rev-parse 是因为取下近期的 commit的id:
$ git rev-parse --verify --short HEAD
e77fcc1
charles@taotao:~/code/linux-3.10.28$ git rev-parse --verify HEAD
e77fcc1e9be7a0ab373f96d5b9d58e1136c8c4b0
或是用:
$ git log --pretty=format:‘%h’ -n 1
e77fcc1
${LOCALVERSION set} 是variable expansion modfier.
它有一下几类方式:
${variable:–word} 假如 variable被设置了一个不以空的值,那麼这一关系式的值便是 variable的值;相反,则是 word的值(variable的值不会改变)
${variable:=word} 假如 variale被set或是值非空,那麼这一关系式的值便是 variable的值; 相反,则是 word的值(variable的值被升级)
${variable: word} 假如 variable被设置了一个不以空的值,那麼这一关系式的值便是 variable的值;相反, 为NULL。
${variable:offset} 得到字符串数组的一个字符串函数(从variable字符串数组 数据库索引为 offset开始, offset值从0开始测算)
${variable:?word} 假如 variable被设置了一个不以空的值,那麼这一关系式的值便是 variable的值;不然,打印 word的值,退出。
${variable:offset:length} 得到variable的字符串(从 offset开始,长短为length)
以上便是Linux Kernel版本号后边有一个减号的缘故和去除的方法了,Linux Kernel版本号尽管仿佛对应用没什么危害,可是也是拥有多方面的缘故的,可以用原文中的方法来清除减号。
版权声明:
作者:暴风侠
链接:https://xitongmac.com/jiaocheng/25392.html
来源:暴风侠_一键激活Win10_Win7系统_Win8系统
文章版权归作者所有,未经允许请勿转载。

