KERNELRELEASE 的定义,Linux $(KERNELRELEASE)

来源:互联网 发布:如何将程序导入单片机 编辑:程序博客网 时间:2024/05/02 01:43

最近用友善之臂的板子,发现内核的名称是:Linux-2.6.29.4-FriendlyARM.后面那个FriendlyARM死活去不掉。后来只好看代码。

1、2.6.29.4这个版本号是是uboot在做uimage的时候加上的,看arch/arm/boot/Makefile:

quiet_cmd_uimage = UIMAGE  $@
      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel /
           -C none -a $(LOADADDR) -e $(LOADADDR) /
           -n 'Linux-$(KERNELRELEASE)' -d $< $@

2、对比,可见2.6.29.4-FriendlyARM就是 =  $(KERNELRELEASE),因此我们需要找到$(KERNELRELEASE)怎么定义的。

3、搜索可以知道$(KERNELRELEASE)在include/config/kernel.release定义,但是改了以后重新make又还有FriendlyARM。

4、看内核顶层的makefile,约872行有说明:

# Build the kernel release string

。。。

#      $(localver-auto)        (only if CONFIG_LOCALVERSION_AUTO is set)
#        ./scripts/setlocalversion    (SCM tag, if one exists)
#        $(LOCALVERSION)        (from make command line if provided)

仔细对比,原来这个FriendlyARM是$(LOCALVERSION)!,搜索下,发现autoconf.h有,哈哈,这就是内核图形配置出来的嘛

5、马上make menuconfig,搜索$(LOCALVERSION),乖乖,原来在Gernel Setup。。。,马上去掉,重新编译。这下没了!