尝试安装gcc-4.8.1时,出现“错误2”的退出问题。

9

我正在尝试在AWS ec2“其他Linux”发行版上安装gcc-4.8.1。我下载了gcc-4.6.2.tar.gz,然后按照http://gcc.gnu.org/wiki/InstallingGCC下的“配置”标题下的说明进行操作(将其修改为4.8.1而不是4.6.2):

tar xzf gcc-4.8.1.tar.gz
cd gcc-4.8.1
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.8.1/configure --prefix=$HOME/gcc-4.8.1 
make
make install

当我运行'make'时,程序会运行一段时间,但最终会出现以下错误:
build/genattrtab /home/ec2-user/gcc-4.8.1_install/objdir/../gcc-4.8.1/gcc/config/i386/i386.md insn-conditions.md \
                -Atmp-attrtab.c -Dtmp-dfatab.c -Ltmp-latencytab.c
make[3]: *** [s-attrtab] Killed
make[3]: Leaving directory `/home/ec2-user/gcc-4.8.1_install/objdir/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/home/ec2-user/gcc-4.8.1_install/objdir'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/ec2-user/gcc-4.8.1_install/objdir'
make: *** [all] Error 2

有人能解释一下为什么会发生这种情况吗?我完全不明白错误信息的含义。我使用gcc4.6.1进行构建,/home/ec2-user/gcc-4.8.1_install是我在其中运行命令的目录。

2个回答

22

我做了一些错误的事情。首先,我没有安装最新的binutils。

然而,这个特定的错误是OOM killer在起作用。安装过程中使用的峰值RAM大于EC2微实例的RAM。请使用更大的实例或使用交换空间:

SWAP=/tmp/swap
dd if=/dev/zero of=$SWAP bs=1M count=500
mkswap $SWAP
sudo swapon $SWAP

这将会交换500 MB,对我的安装来说足够了。


3
好的解决方案!在 DigitalOcean 实例上解决了我的问题。 - russoue
1
你是怎么发现自己 OOM(内存耗尽)的?除了 "Killed" 这个词,还有什么其他的提示吗? - stalepretzel
1
@stalepretzel 我猜他看了dmesg,不过我直到找到这个才想到 :) 内存不足:杀死进程2774(genattrtab)得分760或牺牲子进程 - Luke Antins

2
也许您忘记安装gcc-c++, 请尝试使用命令yum -y install gcc-c++

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接