我想玩C++ 2011,所以我需要未释放的gcc 4.7。我成功地获得了svn主干并编译了它。
为了安全起见,我希望保留系统的默认gcc,因此我配置了一个前缀为gcc4.7的gcc4.7,并将其安装在一个非标准位置。
现在,我该如何使gcc 4.7超越我的系统的默认gcc?
我已经更改了CC和CXX变量,我更新了我的路径,首先指向gcc 4.7 bin dir。当我输入gcc --版本时,我得到4.7,OK。
但gcc不仅仅是一个可执行文件。gcc安装dir有很多可执行文件。还有默认包含和std c++。
到目前为止,我发现的关于这个问题的每一个博客都只谈到gcc和g++的可执行文件。
有人能给我一份清单,列出我需要对环境做哪些改变才能充分利用gcc 4.7吗?更新LD_LIBRARY_PATH?gcc 4.7制度如何优先包括?还有其他事情要考虑吗?
提前谢谢。
发布于 2011-12-29 21:19:22
最简单的答案是:没什么,它只是起作用了。:)
GCC发现了它所需要的东西,首先是相对于自己,其次是在它配置的“前缀”中,最后是在标准位置。这意味着它完全安全地重新定位到你想要的任何地方,只要你重新安置所有它-但请注意,如果安装是不完整的话,倒退行为可能隐藏故障。
发布于 2011-12-29 15:47:03
我认为g++与使用C++的东西纠缠在一起,因为C库与系统纠缠在一起!C++库类中的任何布局更改都将导致与其他C++程序或库不兼容。因此,我根本不会替换系统的C++编译器,或者更重要的是它的标准C++库(除非编译器供应商强烈声明它们与您要替换的版本保持二进制兼容性)。
要播放甚至使用不同版本的g++,使用前缀方法工作得很好。所有编译器特定的工具都是在g++内部使用适当的版本隐式调用的,并且像ar、ld、ranblib等工具实际上并不取决于编译器版本。内部使用的重要组件是标准库(标头和库)和预处理程序。当调用一个版本的g++时,它会发现它真正需要的是哪一个版本。
顺便说一句,当你想玩C++2011的时候,你也可以看一看clang。
发布于 2011-12-29 15:36:00
看看GCC配置文档。我用程序后缀来区分GCC的不同版本。要做到这一点,可以将--progam-suffix=-4.7添加到./configure调用中。
https://stackoverflow.com/questions/8669732
复制相似问题