我的g++版本:
g++ (GCC) 5.1.0我试图编译另一个人的代码,在他的makefile中:
CXX := g++-4.7 -std=gnu++0x所以当我make这些文件时,它会说
make: g++-4.7: Command not found那么有没有什么方法可以让5.1.0版本兼容之前的版本呢?或者,我是否需要在计算机上安装另一个版本的g++才能使Makefile正常工作?
发布于 2015-06-19 00:48:59
您需要使用which命令找到g++-4.7所在的位置。
ML> which g++-4.7
/usr/local/bin/g++-4.7然后,您可以提供CXX的完整路径。-std=gnu++0x的编译器选项应在CFLAGS中。
CXX=/usr/local/bin/g++-4.7
CFLAGS+=-std=gnu++0x发布于 2015-06-19 00:50:06
在你的系统上有多个版本的编译器是没有问题的。
重要的是,所需的库也位于编译器期望它们的位置。编译和链接只来自一个编译器树,这一点很重要。编译器不是一个独立的程序,它依赖于您的程序构建所链接的库。
我的建议是:从gcc的源代码中安装你想要的每一个编译器版本。不要忘了在正确的路径上为每个版本构建binutils。
作为示例,我的安装类似于:
/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,则只需创建具有正确安装路径的每个版本
为此,您必须:
./configure --target=avr --prefix=/opt/avr_4.8.2作为一个例子。这对于binutils和gcc来说也是一样的!对于gcc来说,如果你不需要其他语言和库,你可以使用额外的--enable-labuages=c,c++进行编译,以减少编译时间。
在此之后,您可以在Makefile中提供
CC = /opt/avr_4.8.2/bin/avr-g++因此,您可以并行为任何目标提供任何版本。
还有一个为多个目标构建gcc的选项。但我从来没有尝试过。
如果你从你的发行版安装了gcc,你会遇到麻烦,因为通常情况下,使用--prefix=<some dir>配置的目录对于所有版本都是相同的,这使得不可能为所有版本和库获得干净和独立的文件层次结构。
https://stackoverflow.com/questions/30921035
复制相似问题