【问题标题】:error occurred compiling gcc from source code从源代码编译 gcc 发生错误
【发布时间】:2016-01-02 18:49:01
【问题描述】:

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

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

【问题讨论】:

  • 您解决了吗?由于您已经有一个多月没有得到答案了,我猜答案是“是的——我已经充分解决了这个问题,或者通过下载预编译版本绕过了这个问题”。
  • 我刚刚在虚拟机上安装了一个旧版本的ubuntu

标签: gcc g++ gcc4.4


【解决方案1】:

我也尝试使用更新的gcc 版本安装gcc 4.4.7。我见过和你一样的错误。根据this bug report 的说法,问题来自-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++

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

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

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

@itemx must follow @item

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

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

【讨论】:

    【解决方案2】:

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

    它对我有用。

    【讨论】:

    • 一点解释确实可以改善您的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多