解决gcc无法识别命令行选项的错误


 

今天在升级我自己打磨的Gentoo时,当emerge到sys-block/thin-provisioning-tools时,ebulid进程被中断了,然后在log中看到如下错误信息"cc1plus error unrecognized command line option ‘-std=c++11’",在google无果的情况下前去gentoo的irc频道求助,这才得知,当emerge新的gcc之后,系统并不会自动启用更新版的gcc,而会仍旧使用旧的,这样一来就可能会出现某些命令行选项无法被正确识别的问题.之后根据irc中其他网友给出的建议,参考 Gentoo Gcc Upgrade Guide 启用了新的gcc,这里简要记录一下使用到的命令,以便将来需要时查看.

Wangqige wankey # gcc-config -l
 [1] x86_64-pc-linux-gnu-4.6.3 * [2] x86_64-pc-linux-gnu-4.7.3 Wangqige wankey # gcc-config 2 * Switching native-compiler to x86_64-pc-linux-gnu-4.7.3 ... >>> Regenerating /etc/ld.so.cache... [ ok ] * If you intend to use the gcc from the new profile in an already * running shell, please remember to do: * . /etc/profile Wangqige wankey # env-update >>> Regenerating /etc/ld.so.cache... Wangqige wankey # source /etc/profile Wangqige wankey # emerge --oneshot libtool

gcc-config -l是列出系统中已安装的所有gcc版本. 之后使用gcc-config 2选择使用第二个gcc版本,如果有更多个版本,则将2改为最新的那个版本相应的序号.随后的env-update和source /etc/profile用来让系统能够识别它. 当完成这些步骤之后,我们需要重建libtool,即上面最后一句命令.

最后,为了保证系统的健全状态,我们应该使用新的gcc重建一次系统(?真的吗?在最新的英文版中我没见到相关描述,只在中文版中看到,看来又是过时的吧)

emerge -eav system
emerge -eav world

如果希望将旧版本的gcc删除,我们可以使用类似如下命令

emerge -aC =sys-devel/gcc-3.4*


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM