痛苦的版本对齐(2) 和时间的相关性
为什么有些环境,之前好好的,过一段时间后不能用了?
虽然不能说是绝对的原因,很大一部分是因为临时文件等引起的。
【问题回顾】
1、改变了工具链
再回到近期 cygwin + cross toolchain 对 u-boot 版本的环境再搭建。
春节前,尝试使用Sourcery G++ Lite 2009q1-203 工具链(Mentor Graphics收购了),进行编译构建。
由于Sourcery G++ Lite 本身是基于 windows直接工作的(minGW机制),所以和 cygwin配置是需要特殊设定。
特殊之处就是 路径的表示:
对于windows/dos路径为 d:\cygwin\bin\
对于cygwin路径为 /cygdrive/d/cygwin/bin
cygwin的差别,在于cygdrive的路径映射(cygdrive相当于将windows下“我的电脑”的映射路径)
其他就和linux和windows的差别一样,主要是 \ 和 /,另外就是linux下没有 :(冒号)。
为了解决该问题,Sourcery G++ Lite需要配置环境变量 CYGPATH:export CYGPATH=c:/cygwin/bin/cygpath (根据实际cygwin路径配置)
2、可以正常使用(这并非全部真实的)
配置了 CYGPATH后,就可以正常运行了,一切正常。
3、春节后,无法工作了。
告警错误如下:
.depend:9: *** multiple target patterns. Stop
【问题找到了,还未完全解决】
找到错误提示的.depend文件,看到如下部分信息:
/u-boot-1.1.6/u-boot-1.1.6/include/asm/ptrace.h \
/u-boot-1.1.6/u-boot-1.1.6/include/asm/proc/ptrace.h \
d:/cygwin/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include/stdarg.h \
由于 出现了 冒号,导致工具链无法工作,因为:是make的target标记信息。
而之前能够运行,是在工具链切换前,之前的相近工具链刚编译过,正确的.depend的文件已经建立好了,编译时直接用正确的了。
之后不行了,是过了较久,make重新生成该部分信息。
【问题还会跟踪,但经验也要收敛】
版本对齐要求中,有多加了一项,清理临时文件。