现在我的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’
那么如何解决这个问题呢?感谢。
答案 0 :(得分:4)
我尝试使用较新的gcc 4.4.7
版本安装gcc
。我和你一样看到了同样的错误。根据{{3}},问题来自标记-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
。也许你也可以手工修理它们,我试过一个案例,但我不知道我做了什么,所以我没有遵循这条道路。
长话短说,我想你最好通过运行虚拟机或码头图像。
答案 1 :(得分:0)
尝试
../configure CFLAGS='-fgnu89-inline -g -O2' ...
对我有用。