编译安装GCC-11.1.0遇configure错误:需C++11编译器,求解决
解决编译GCC 11.1.0时configure阶段C++11支持缺失的问题
问题原因
编译GCC 11.1.0需要一个已支持C++11特性的编译器(通常要求GCC 4.8及以上版本),系统默认编译器版本过低,无法满足bootstrap编译的要求,导致configure失败。
解决方案
步骤1:检查当前编译器版本
先确认系统现有gcc/g++版本:
gcc --version g++ --version
若输出版本低于4.8,需要先升级编译器或安装临时可用的高版本编译器。
方案A:升级系统自带编译器(适用于Debian/Ubuntu系)
如果系统软件源中提供了足够新的编译器,直接执行:
sudo apt update sudo apt install --only-upgrade gcc g++
安装完成后再次检查版本,确保g++版本≥4.8,随后重新执行GCC 11.1.0的configure命令。
方案B:手动编译临时支持C++11的编译器(适用于源中无高版本编译器的场景)
由于你已经提前安装了gmp、mpfr、mpc、isl等依赖,可以先编译一个支持C++11的低版本GCC(比如GCC 7.5.0)作为临时编译器,再用它编译GCC 11.1.0:
- 下载GCC 7.5.0源码并解压,进入源码目录
- 执行configure(复用已安装的依赖库):
./configure --prefix=/usr/local/gcc-temp --enable-languages=c,c++ --disable-multilib \ --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc --with-isl=/usr/local/isl - 编译并安装:
make -j$(nproc) # 用全部CPU核心加速编译 sudo make install - 将临时编译器加入环境变量优先级:
export PATH=/usr/local/gcc-temp/bin:$PATH export LD_LIBRARY_PATH=/usr/local/gcc-temp/lib64:$LD_LIBRARY_PATH - 验证临时编译器版本:
确认版本支持C++11后,回到GCC 11.1.0目录重新执行configure。g++ --version
额外注意事项
- 你当前的configure命令中
--prefix=/usr/local/gcc-7.3.0是笔误,建议改为--prefix=/usr/local/gcc-11.1.0,避免版本混淆。 - 执行configure前,可手动指定依赖库的头文件和链接库路径,确保编译器能找到依赖:
export CPPFLAGS="-I/usr/local/gmp/include -I/usr/local/mpfr/include -I/usr/local/mpc/include -I/usr/local/isl/include" export LDFLAGS="-L/usr/local/gmp/lib -L/usr/local/mpfr/lib -L/usr/local/mpc/lib -L/usr/local/isl/lib"
内容的提问来源于stack exchange,提问作者EchoLi
相关产品推荐
相关产品推荐

