gcc 4.7.0 发布有几天了,前几天试着编译了一下。中间遇到了一个问题,在这里说明一下,希望在编译gcc 4.7.0遇到同样问题且看到我这篇文章的问有帮助。
gcc 4.7.0 的问题是shared版的libstdc++6与gcc 4.6系列不兼容,导致编译到stage3后,出现app crash,原因是gcc编译器链接到了ppl的动态库而ppl动态库以来libstdc++6,在stage3的时候gcc会调用4.7.0中新编译的libstdc++6库从而导致程序退出。我当时的临时解决方法是,在遇到configure出错的组件上,手动写sh脚本,根据config.log导出CC变量后运行对应configure,让gcc从环境变量中找libstdc++6。重复这个步骤完成剩下的几个库的编译。完成编译后,在安装gcc前先备份旧版的libstdc++6,安装gcc后,将旧版的libstdc++6暂时替换回去,重新编译gmp,mpfr,ppl,cloog,mpc几个库后,再依次安装然后在将gcc4.7.0的libstdc++6库替换回去就能正常运行了。主要是gmp和ppl这两个库会依赖libstdc++6,切忌不要在编译完这两个中的其中一个后安装,不然会导致gcc无法运行。