jiayin's profile看天下美景吃天下美味PhotosBlogLists Tools Help

Blog


    July 05

    admire GCC

    充分感受了一把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,阶段式向前兼容。