Home > linux&软件技术 > 解决gcc无法识别命令行选项的错误

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

撰写于 2013年08月08日 | 没有评论

今天在升级我自己打磨的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*

» 标签: ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>