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

时间:2011-12-29 15:29:25

标签: c++ gcc

我想玩C ++ 2011,所以我需要未发布的gcc 4.7。我能够成功获得svn trunk并进行编译。

为了安全起见,我想保留系统的默认gcc,因此我使用 - 前缀配置gcc4.7并将其安装在非标准位置。

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

我已经更改了 CC CXX 变量,我更新了我的 PATH 以指向gcc 4.7 bin 先生。当我输入 gcc --version 时,我得到4.7 OK。

但是gcc不仅仅是一个可执行文件。 gcc install目录中有许多可执行文件。还有默认包含和std lib c ++。

到目前为止,我在这个主题上发现的所有博客条目/ SO问题都只涉及 gcc g ++ 可执行文件。

任何人都可以向我提供我需要对环境进行的更改列表以充分使用gcc 4.7吗? 更新LD_LIBRARY_PATH?如何优先考虑gcc 4.7系统包含?还有其他事情需要考虑吗?

提前致谢。

3 个答案:

答案 0 :(得分:2)

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

要播放甚至使用不同版本的g ++,使用前缀方法可以正常工作。所有编译器特定的工具都是使用适当的版本在g ++中隐式调用的,而ar,ld,ranblib等工具实际上并不依赖于编译器版本。内部使用的重要组件是标准库(标头和库)和预处理器。在调用g ++版本时,它会确定它真正需要哪些版本。

顺便说一句,当你想玩C ++ 2011时,你也可以看看铿锵声。

答案 1 :(得分:1)

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

GCC首先找到它需要的东西,第二个是它配置的“前缀”,最后是标准位置。通过这种方式,只要您重新定位所有,就可以将它重新定位到任何您喜欢的地方,但要注意,如果安装不完整,后退行为可以隐藏破坏。

答案 2 :(得分:0)

查看GCC Configuration docs。我使用程序后缀来区分不同的GCC版本。为此,请将--progam-suffix=-4.7添加到./configure调用中。