一 问题
在给OrangePI PC配置内核时,出现warning: override: reassigning to symbol的问题(使用的配置文件是官方提供的文件sun8iw7p1_mainline_defconfig)
warning字面意思是“覆盖:重新分配给符号XXX”
使用的配置命令是
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun8iw7p1_mainline_defconfig
虽然也生成了.config文件,但是这么多warning看上去很不爽,也不知道会不会对编译内核产生影响,于是就研究了下并发现了问题所在。
二 解决
根据warning信息,配置文件的第50行有问题,cd到arch/arm/configs/下,vim打开sun8iw7p1_mainline_defconfig,并跳转到第50行,
乍一看似乎看不出什么毛病,只是感觉第49行的注释跟第50行有点矛盾,一个说没设置,一个说设置了。继续看其它有warning的行,发现情形类似,
于是把这个有矛盾的注释删掉,再次配置,发现就没有warning了。估计是配置命令解析这个注释时发现跟相邻行有矛盾,就提示warning了,最后还是会按照XXX=y
来配置。
下面是个简单处理脚本,放在arch/arm/configs下运行
import re
import os
line_match = re.compile(r'#\s+(CONFIG_.+) is not set')
srcFile = 'sun8iw7p1_mainline_defconfig'
dstFile = 'sun8iw7p1_mainline_defconfig_new'
with open(srcFile, 'r') as SRC_FD:
with open(dstFile, 'w') as DST_FD:
for oneline in SRC_FD:
obj = line_match.match(oneline)
if obj:
pass
else:
DST_FD.write(oneline)
os.rename(srcFile, 'sun8iw7p1_mainline_defconfig_old')
os.rename(dstFile, 'sun8iw7p1_mainline_defconfig')
这样,再次执行以下命令就可以正确配置,
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun8iw7p1_mainline_defconfig