Linux kernel 版本号被记上了一个后缀"+" (plus sign)

在把linux kernel 代码纳入到 git管理之后,发现生成的内核版本号(在文件 include/config/kernel.release里) 增加了一个 "+"后缀。

内核版本号是根据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)

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值