2011-12-29 61 views
4

我想玩C++ 2011,所以我需要未发布的gcc 4.7。我能够成功获取svn trunk并编译它。如何正确切换gcc版本?

我要保持我的安全系统默认的gcc,所以我配置gcc4.7与--prefix和非标准位置安装它。

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

我已经改变了CCCXX变量,我更新了我的PATH对GCC 4.7 目录第一点。当我输入gcc --version我得到4.7 OK。

但gcc不仅仅是一个可执行文件。 gcc安装目录中有很多可执行文件。还有默认包含和std lib C++。

到目前为止,每一个博客条目/ SO问题,我在这个问题上找到只讲了GCC克++可执行文件。

任何人都可以给我一个清单,我需要做的环境来完全使用gcc 4.7吗? 更新LD_LIBRARY_PATH?如何优先考虑gcc 4.7系统?还有其他事情要考虑吗?

在此先感谢。

+2

在GCC FAQ中回答:http://gcc.gnu.org/faq。html#multiple – 2011-12-29 18:04:17

+0

我用gcc 4.7编译后遇到奇怪的段错误。这就是为什么我要求提供我可能错过的信息。因此,在我的问题“正常”;) – Offirmo 2011-12-29 18:58:31

回答

1

最简单的答案是:无;它只是工作。 :)

GCC找到它首先相对于它自己的需求,第二个在它配置的“前缀”中,最后在标准位置。通过这种方式,只要您重新定位全部,就可以将其重新定位到任何位置,但要注意,如果安装不完整,则回退行为会隐藏破碎。

+0

好吧,所以很可能我遇到的问题是来自其他问题。将再试一次。 – Offirmo 2011-12-29 23:22:16

0

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

2

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

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

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

+0

谢谢,我试过铿锵声,但它没有发现我的代码中导致崩溃的错误。海湾合作委员会立即发现一个概述问题的编译错误。自从我坚持gcc。在clang和gcc之间切换比在两个gcc之间切换更容易。 – Offirmo 2011-12-29 18:56:42