July 05
充分感受了一把versioning的重要性。操作系统自带了GCC 4.1.2,由于要build的软件需要GCC 3.2.x,于是下载了一个3.2.2,直接上来就build,出错,竟然是C语法错,
read-rtl.c(662): invalid lvalue in increment
心想不就是左值作了个加一操作吗,看看源码直接改了得了,一看代码发现是一个宏,里面有一句:
(gcc/include/obstack.h)
*((void**)__o->next_free)++ = ((void*)datum);
再一看,左值操作比比皆是,根本改不过来。于是只好放弃,想着直接装个binary吧。搜了半天愣是没找到suse上的GCC 3.x的binary。还得自己build,又找了许久,终于发现内部人士给出的方案:
由于GCC 3.4以前的代码有很多使用了不规范的语法,用GCC 4是无法编译的。请先用GCC 4编译GCC 3.4,然后用GCC 3.4编译GCC 3.x (x<4) 。。。
搞C语言,GNU的真是猛阿,幸好搞出来一个不老不新的3.4,阶段式向前兼容。