5

现在我的 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’

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

4

2 回答 2

7

我也尝试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

但我仍然得到同样的错误。我假设标志没有正确转发,但我不知道。然后我尝试了一个正常的

./configure

Makefile并更改了from中的两行

CC = gcc
CXX = g++

CC = gcc -fgnu89-inline
CXX = g++ -fgnu89-inline

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

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

@itemx must follow @item

它们是由较新版本texinfotexinfo. 也许你也可以手动修复它们,我试过一个案例,但我不知道我在做什么,所以我没有遵循这条路。

长话短说,我猜你最好通过运行虚拟机或 docker 镜像来运行。

于 2016-02-05T18:03:58.367 回答
1

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

它对我有用。

于 2019-11-11T10:00:57.303 回答