从源代码编译gcc时出错

从源代码编译gcc时出错,gcc,g++,gcc4.4,Gcc,G++,Gcc4.4,现在我的ubuntu 15.10机器上的gcc和g++是5.2.1版。出于某种原因,我需要安装其中的v4.4。我下载了gcc4.4.7的源代码,并配置如下: ../configure \ --disable-checking \ --enable-languages=c,c++ \ --enable-multiarch \ --enable-shared \ --enable-threads=posix \ --program-suffix=4.4

现在我的ubuntu 15.10机器上的gcc和g++是5.2.1版。出于某种原因,我需要安装其中的v4.4。我下载了gcc4.4.7的源代码,并配置如下:

../configure \
    --disable-checking \
    --enable-languages=c,c++ \
    --enable-multiarch \
    --enable-shared \
    --enable-threads=posix \
    --program-suffix=4.4 \
    --with-gmp=/usr/local/lib \
    --with-mpc=/usr/local/lib \
    --with-mpfr=/usr/local/lib \
    --without-included-gettext \
    --with-system-zlib \
    --with-tune=generic \
    --prefix=$HOME/bin/android_build
我得到一个makefile并尝试make,但收到以下两个错误:

../../gcc/toplev.c:536:1: error: redefinition of ‘floor_log2’
../../gcc/toplev.c:571:1: error: redefinition of ‘exact_log2’

那么如何解决这个问题呢?谢谢。

我也尝试用更新的
gcc
版本安装
gcc4.4.7
。我见过和你一样的错误。根据,问题来自标志
-fno-gn89-inline
,它成为在较新的
gcc
版本上处理内联函数的默认标志。从gcc 4.3开始,默认值为
-fgnu89 inline
。因此,您只需在编译时设置
-fgnu89 inline
标志

我试过这个

CFLAGS='-fgnu89-inline -g -O2' CXXFLAGS='-fgnu89-inline -g -O2' ./configure
make
但我还是犯了同样的错误。我假设这些标志没有被正确转发,但我不知道。然后我试了一个普通的

./configure
并将
Makefile
中的两行从

CC = gcc
CXX = g++

有了这个,我再也看不到错误了

但是,我遇到了其他错误:

@itemx must follow @item
它们是由较新版本的
texinfo
引起的,因此您可以使用较旧版本的
texinfo
。也许你也可以手工修复,我试过一个案例,但我不知道我在做什么,所以我没有遵循这条道路

长话短说,我想通过运行虚拟机或docker映像,你会过得更好。

试试看
。/configure CFLAGS='-fgnu89 inline-g-O2'.


这对我有效。

你解决了这个问题吗?因为你已经一个多月没有得到答案了,我猜答案是“是的-我已经充分解决了这个问题,或者通过下载预编译版本来规避这个问题”。我刚刚在虚拟机上安装了一个较旧版本的ubuntu。一点解释真的可以改进你的答案。
@itemx must follow @item