不要在Linux内核版本中添加“+”

时间:2013-10-12 11:57:33

标签: linux git linux-kernel

我正在构建linux内核,如果我的内核在git下,那么内核版本每次都是:

Image Name:   Linux-2.6.39+

如果我没有使用git,那么一切都没问题,最后没有任何加分。

我知道这是由scripts / setlocalversion脚本完成的:

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

那么,如果没有代码更改,可以说构建系统不需要在版本行的末尾添加“+”吗?

4 个答案:

答案 0 :(得分:22)

版本字符串末尾的加号表示内核是根据修改后的源构建的(即,存在未提交的更改)。 scripts/setlocalversion中的评论也表明了这一点。

尽管有一个脏的工作目录,为了避免附加'+',只需在运行make时明确地设置LOCALVERSION:

make LOCALVERSION=

在构建之前,您可能还需要在内核配置(CONFIG_LOCALVERSION_AUTO)中将配置选项n更改为.config

sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" .config

答案 1 :(得分:18)

要防止脚本.scmversiontouch .scmversion 附加到内核本地版本的末尾,请在内核源代码的根目录中创建一个空的SELECT * FROM my_table WHERE summary LIKE '%keyword1%' OR summary LIKE '%keyword2' OR summary LIKE '%keyword3%'; 文件。

IN

这样,您就可以像在内核配置文件中一样保留LOCALVERSION,以防您想要将本地签名附加到内核名称。

答案 2 :(得分:0)

操作脚本/ setlocalversion似乎是我的唯一方法。 强制返回scm_version()

scm_version()
{
        local short
        short=false
        **return**

答案 3 :(得分:0)

如果您使用的是yocto和imx soc,请将该行添加到local.conf

SCMVERSION_pn-linux-imx = ""

在imx-4.9.88-2.0.0_ga版本上测试