从源代码编译gcc时发生错误

dar*_*ord 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 \
    --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
Run Code Online (Sandbox Code Playgroud)

我得到了一个makefile,然后尝试make,但收到以下两个错误:

../../gcc/toplev.c:536:1: error: redefinition of ‘floor_log2’
../../gcc/toplev.c:571:1: error: redefinition of ‘exact_log2’
Run Code Online (Sandbox Code Playgroud)

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

pfn*_*sel 6

我也尝试gcc 4.4.7使用较新gcc版本进行安装。我见过与您相同的错误。根据此错误报告,问题来自标志-fno-gn89-inline,该标志成为在较新gcc版本上处理内联函数的默认标志。截至gcc 4.3,默认值为-fgnu89-inline。因此,您需要做的就是-fgnu89-inline在编译时设置标志。

我尝试过

CFLAGS='-fgnu89-inline -g -O2' CXXFLAGS='-fgnu89-inline -g -O2' ./configure
make
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到相同的错误。我认为这些标志未正确转发,但我不知道。然后我尝试了正常

./configure
Run Code Online (Sandbox Code Playgroud)

Makefile从中更改了两行

CC = gcc
CXX = g++
Run Code Online (Sandbox Code Playgroud)

CC = gcc -fgnu89-inline
CXX = g++ -fgnu89-inline
Run Code Online (Sandbox Code Playgroud)

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

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

@itemx must follow @item
Run Code Online (Sandbox Code Playgroud)

它们是由的较新版本引起的texinfo,因此,您可以使用的较旧版本texinfo。也许您也可以手工修复它们,我尝试了一种情况,但是我不知道自己在做什么,所以我没有遵循这条路。

长话短说,我想您最好运行虚拟机或docker映像。