首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我的电脑上安装了g++ 5.1.0版本,我可以使用g++-4.7命令进行编译吗?

如果我的电脑上安装了g++ 5.1.0版本,我可以使用g++-4.7命令进行编译吗?
EN

Stack Overflow用户
提问于 2015-06-19 00:36:13
回答 2查看 372关注 0票数 0

我的g++版本:

代码语言:javascript
复制
g++ (GCC) 5.1.0

我试图编译另一个人的代码,在他的makefile中:

代码语言:javascript
复制
CXX := g++-4.7 -std=gnu++0x

所以当我make这些文件时,它会说

代码语言:javascript
复制
make: g++-4.7: Command not found

那么有没有什么方法可以让5.1.0版本兼容之前的版本呢?或者,我是否需要在计算机上安装另一个版本的g++才能使Makefile正常工作?

EN

回答 2

Stack Overflow用户

发布于 2015-06-19 00:48:59

您需要使用which命令找到g++-4.7所在的位置。

代码语言:javascript
复制
ML> which g++-4.7
/usr/local/bin/g++-4.7

然后,您可以提供CXX的完整路径。-std=gnu++0x的编译器选项应在CFLAGS中。

代码语言:javascript
复制
CXX=/usr/local/bin/g++-4.7 
CFLAGS+=-std=gnu++0x
票数 0
EN

Stack Overflow用户

发布于 2015-06-19 00:50:06

在你的系统上有多个版本的编译器是没有问题的。

重要的是,所需的库也位于编译器期望它们的位置。编译和链接只来自一个编译器树,这一点很重要。编译器不是一个独立的程序,它依赖于您的程序构建所链接的库。

我的建议是:从gcc的源代码中安装你想要的每一个编译器版本。不要忘了在正确的路径上为每个版本构建binutils。

作为示例,我的安装类似于:

代码语言:javascript
复制
/opt/linux_gnu_4.6.4
/opt/linux_gnu_4.9.2
/opt/power_pc_4.8.1 

诸若此类。

如果您使用完全相同的路径设置(名为prefix )为gcc和binutils创建configure/make/make install,则只需创建具有正确安装路径的每个版本

为此,您必须:

代码语言:javascript
复制
./configure --target=avr --prefix=/opt/avr_4.8.2

作为一个例子。这对于binutils和gcc来说也是一样的!对于gcc来说,如果你不需要其他语言和库,你可以使用额外的--enable-labuages=c,c++进行编译,以减少编译时间。

在此之后,您可以在Makefile中提供

代码语言:javascript
复制
CC = /opt/avr_4.8.2/bin/avr-g++

因此,您可以并行为任何目标提供任何版本。

还有一个为多个目标构建gcc的选项。但我从来没有尝试过。

如果你从你的发行版安装了gcc,你会遇到麻烦,因为通常情况下,使用--prefix=<some dir>配置的目录对于所有版本都是相同的,这使得不可能为所有版本和库获得干净和独立的文件层次结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30921035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档