我正在构建linux内核,如果我的内核在git下,那么每次内核版本是:
Image Name: Linux-2.6.39+
如果我没有使用git,那么一切都是OK的,没有任何加号在结束。
我知道这是由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
因此,是否可以在不更改代码的情况下构建系统,而无需在版本行末尾添加“+”?
5条答案
按热度按时间qco9c6ql1#
版本字符串末尾的加号表示内核是从修改过的源代码构建的(也就是说,存在未提交的更改)。
scripts/setlocalversion
中的注解也表明了这一点。要避免在工作目录已修改的情况下附加'+',只需在运行
make
时显式设置LOCALVERSION:您可能还需要在构建以下内容之前,在内核配置(
.config
)中将配置选项CONFIG_LOCALVERSION_AUTO
更改为n
:vc6uscn92#
要防止脚本
scripts/setlocalversion
将+
附加到内核本地版本的末尾,请在内核源代码的根目录中创建一个空的.scmversion
文件。这样,您就可以在内核配置文件中保留LOCALVERSION,以防您想将本地签名附加到内核名称。
x8diyxa73#
操作脚本/setlocalversion似乎是我唯一的方法。在
scm_version()
中强制返回:u5rb5r594#
如果您使用yocto和imxsoc,请将这一行添加到您的local.conf中
在imx-4.9.88-2.0.0_ga发布版本上进行测试
piok6c0g5#
只需在scripts/setlocalversion中将该行注解为变通方法/quickfix。那么内核版本应该与“make kernelversion”相同。