我有CentOS 7.2 1511(gcc 4.8.5 20150623(Red Hat 4.8.5-4)),并且一直在尝试编译从gnu网站下载的gcc 6.2.0。以下是我得到的错误:
checking for x86_64-pc-linux-gnu-gcc... /home/xxx/gcc-6.2.0/build/./gcc/xgcc -B/home/xxx/gcc-6.2.0/build/./gcc/ -B/usr/local/x86_64-pc-linux-gnu/bin/ -B/usr/local/x86_64-pc-linux-gnu/lib/ -isystem /usr/local/x86_64-pc-linux-gnu/include -isystem /usr/local/x86_64-pc-linux-gnu/sys-include
checking for suffix of object files... configure: error: in `/home/xxx/gcc-6.2.0/build/x86_64-pc-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] Error 1
make[2]: Leaving directory `/home/xxx/gcc-6.2.0/build'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/xxx/gcc-6.2.0/build'
make: *** [all] Error 2
查看x86_64-pc-linux-gnu / libgcc / config.log文件:
configure:3435: /home/xxx/gcc-6.2.0/build/./gcc/xgcc -B/home/xxx/gcc-6.2.0/build/./gcc/ -B/usr/local/x86_64-pc-linux-gnu/bin/ -B/usr/local/x86_64-pc-linux-gnu/lib/ -isystem /usr/local/x86_64-pc-linux-gnu/include -isystem /usr/local/x86_64-pc-linux-gnu/sys-include -V >&5
xgcc: error: unrecognized command line option '-V'
xgcc: fatal error: no input files
compilation terminated.
configure:3446: $? = 1
configure:3435: /home/xxx/gcc-6.2.0/build/./gcc/xgcc -B/home/xxx/gcc-6.2.0/build/./gcc/ -B/usr/local/x86_64-pc-linux-gnu/bin/ -B/usr/local/x86_64-pc-linux-gnu/lib/ -isystem /usr/local/x86_64-pc-linux-gnu/include -isystem /usr/local/x86_64-pc-linux-gnu/sys-include -qversion >&5
xgcc: error: unrecognized command line option '-qversion'; did you mean '--version'?
xgcc: fatal error: no input files
compilation terminated.
这里发生了什么?我按照“mkdir build; cd build”的步骤进行操作,然后发出configure命令,如下所示:
../configure --disable-multilib --enable-languages=c,c++ --with-system-zlib --with-default-libstdcxx-abi=gcc4-compatible
答案 0 :(得分:0)
与(感谢Oleksandr Kravchuk)的错误略有不同:
以下是我的解决方案:
--- tmp/gcc-6.2.0/libgcc/configure 2016-04-11 15:45:35.000000000 -0400
+++ gcc-6.2.0/libgcc/configure 2016-09-25 15:59:21.611181908 -0400
@@ -3426,26 +3426,26 @@ See \`config.log' for more details." "$L
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
+#for ac_option in --version -v -V -qversion; do
+# { { ac_try="$ac_compiler $ac_option >&5"
+#case "(($ac_try" in
+# *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+# *) ac_try_echo=$ac_try;;
+#esac
+#eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+#$as_echo "$ac_try_echo"; } >&5
+# (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+# ac_status=$?
+# if test -s conftest.err; then
+# sed '10a\
+#... rest of stderr output deleted ...
+# 10q' conftest.err >conftest.er1
+# cat conftest.er1 >&5
+# rm -f conftest.er1 conftest.err
+# fi
+# $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+# test $ac_status = 0; }
+#done
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
所以基本上我只是忽略了对“-qversion”,“ - V”等的所有检查。此外,稍后在相同的配置脚本中将给出另一个“libisl”API未找到错误。由于我自己下载了libisl源代码并直接将其编译到/ usr / local / lib,因此gcc编译似乎没有获取新库。
因此我将“/ usr / local / lib”行添加到/etc/ld.so.conf文件中,然后执行“sudo ldconfig”。
编译继续完成而没有错误,测试似乎很好。
答案 1 :(得分:0)
我遇到了&#34; [stage1-bubble]错误&#34; 因为我没有关注proper procedure来构建和安装gcc。例如,我在源目录上完成了 configure 。
以下是在CentOS 7上构建和安装gcc 8.1.0的方法:
首先是一些先决条件:
yum install gcc-c++
yum install libgcc.i686
yum install glibc-devel.i686
yum install epel-release
yum install lbzip2
yum install wget
yum install flex
下载,构建和安装:
wget ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-8.1.0/gcc-8.1.0.tar.xz
tar -xvf gcc-8.1.0.tar.xz
cd gcc-8.1.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-8.1.0/configure --prefix=$HOME/GCC-8.1.0 --enable-languages=c,c++
make -j 3
make install
在我的虚拟机上,构建需要几个小时,即使使用-j选项也可以利用额外的CPU内核。
如果构建失败,例如缺少依赖关系,那么擦除“objdir”的好主意是个好主意。目录并再次运行make
。
顺便说一句,这些步骤也可用于构建Git repository中的最新代码,显然只需稍作修改。