现象

系统本来可以正常编译linux系统kernel,但在安装svn后,kernel编译出错。

CHK   include/linux/version.h CHK   include/generated/utsrelease.hmake[1]: `include/generated/mach-types.h' is up to date. CALL  scripts/checksyscalls.sh CHK   include/generated/compile.hgcc: directory: No such file or directorygcc: directory": No such file or directory:0: warning: missing terminating " charactergcc: directory: No such file or directorygcc: directory": No such file or directory:0: warning: missing terminating " charactergcc: directory: No such file or directorygcc: directory": No such file or directory:0: warning: missing terminating " character CC   drivers/gpu/mali/mali/common/mali_kernel_core.oarm-eabi-gcc: error: ": No such file or directorymake[4]: *** [drivers/gpu/mali/mali/common/mali_kernel_core.o] 错误 1make[3]: *** [drivers/gpu/mali/mali] 错误 2make[2]: *** [drivers/gpu/mali] 错误 2make[1]: *** [drivers/gpu] 错误 2make: *** [drivers] 错误 2make: *** 正在等待未完成的任务....

原因分析

定位到 drivers/gpu/mali/ump/Makefile.common 和 drivers/gpu/mali/mali/Makefile 两个文件中都有关于 SVN_REV:=xxxx 的语句,正常情况下 SVN_REV:= 为空,当检查到svn版本后, SVN_REV:= 有了值,导致脚本中判断走入错误分支。

解决方法

将两个文件中的 SVN_REV 值都赋值为空 “” 即可。

drivers/gpu/mali/ump/Makefile.common:

 16 # Get subversion revision number, fall back to 0000 if no svn info is available 17 #SVN_REV:=$(shell ((svnversion | grep -qv exported && echo -n 'Revision: ' && svnversion) || git svn info | sed -e 's/$$$$/M/' | grep     '^Revision: ' || echo ${MALI_RELEASE_NAME}) 2>/dev/null | sed -e 's/^Revision: //') 19 SVN_REV:=""

drivers/gpu/mali/mali/Makefile:

117 #SVN_REV := $(shell (cd $(DRIVER_DIR); (svnversion | grep -qv exported && svnversion) || git svn info | grep '^Revision: '| sed -e 's/    ^Revision: //' ) 2>/dev/null )119 SVN_REV := ""