解決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