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

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

Image Name: Linux-2.6.39+ 

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

我知道这是由脚本/ 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 

那么,没有代码改变就可以build立系统,不需要在版本行的末尾添加“+”?

Solutions Collecting From Web of "不要在linux内核版本中加“+”"

版本字符串末尾的加号表示内核是由修改的源构建的(也就是说,没有提交的更改)。 这也通过scripts/setlocalversion的注释来表示。

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

 make LOCALVERSION= 

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

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

为了防止脚本scripts/setlocalversion+附加到内核本地版本的末尾,请在内核源代码的根目录下创建一个空的.scmversion文件。

 touch .scmversion 

这样,你就可以像在内核配置文件中一样离开LOCALVERSION,以防你想把一个本地签名附加到内核名字上。