如何正确地在gcc版本之间切换

How to properly switch between gcc versions?

本文关键字:之间 版本 gcc 正确地      更新时间:2023-10-16

我想玩c++ 2011,所以我需要未发布的gcc 4.7。我能够成功地获得svn主干并编译它。

为了安全起见,我想保留系统的默认gcc,所以我用——前缀配置gcc4.7,并将其安装在一个非标准位置。

现在我应该如何在我的系统默认的gcc上启用gcc 4.7呢?

我已经改变了CCCXX变量,我更新了我的PATH指向gcc 4.7 bin dir。当我输入gcc——version我得到4.7 OK。

但是gcc不仅仅是一个可执行文件。在gcc install dir中有许多可执行文件。也有默认包含和std库c++。

到目前为止,我找到的关于这个主题的每个博客条目/So问题都只讨论gccg++可执行文件。

谁能给我一个列表的变化,我需要做的环境完全使用gcc 4.7 ?update LD_LIBRARY_PATH ?如何优先考虑gcc 4.7系统包含?还有其他需要考虑的吗?

我认为c++与使用c++的事情纠缠在一起,因为C库与系统纠缠在一起!c++库类中的任何布局更改都将导致与其他c++程序或库的不兼容。因此,我不会替换系统的c++编译器,或者更重要的是,我不会替换它的标准c++库(除非编译器供应商强有力地声称他们与您要替换的版本保持二进制兼容性)。

要玩甚至使用不同版本的g++,使用前缀方法可以很好地工作。所有特定于编译器的工具都是使用合适的版本从c++内部隐式调用的,像ar、ld、ranblib等工具并不真正依赖于编译器的版本。内部使用的重要组件是标准库(头文件和库)和预处理器。当调用一个版本的g++时,它会找出它真正需要的是哪个。

顺便说一句,当你想玩c++ 2011的时候,你也可以看看clang.

最简单的答案是:什么都不做;它只是工作。:)

GCC首先在相对于自身的位置找到它需要的东西,其次在配置它的"前缀"中找到,最后在标准位置找到。通过这种方式,只要您重新定位所有,就可以安全地将其重新定位到您喜欢的任何地方-但要注意,如果安装不完整,则后退行为可能会隐藏损坏。

查看GCC配置文档。我使用程序后缀来区分不同的GCC版本。要做到这一点,例如,将--progam-suffix=-4.7添加到./configure调用中。