编译GCC-13源码触发删除构造函数错误,求配置及解决建议
GCC 13编译报错:已删除构造函数调用问题
问题场景
在编译GCC源码的releases/gcc-13分支时,执行make命令触发编译错误,具体信息如下。
错误日志
../.././gcc/rtl-ssa/accesses.cc:1422:24: error: call to deleted constructor of 'rtl_ssa::access_array_builder' access_array_builder builder (watermark); ^ ~~~~~~~~~ ../.././gcc/obstack-utils.h:79:28: note: 'obstack_watermark' has been explicitly marked deleted here DISABLE_COPY_AND_ASSIGN (obstack_watermark); ^ ../.././gcc/rtl-ssa/accesses.cc:1465:24: error: call to deleted constructor of 'rtl_ssa::access_array_builder' access_array_builder builder (watermark); ^ ~~~~~~~~~ ../.././gcc/obstack-utils.h:79:28: note: 'obstack_watermark' has been explicitly marked deleted here DISABLE_COPY_AND_ASSIGN (obstack_watermark); ^ ../.././gcc/rtl-ssa/accesses.cc:1514:23: error: call to deleted constructor of 'rtl_ssa::access_array_builder' access_array_builder builder (watermark); ^ ~~~~~~~~~ ../.././gcc/obstack-utils.h:79:28: note: 'obstack_watermark' has been explicitly marked deleted here DISABLE_COPY_AND_ASSIGN (obstack_watermark); ^ 7 warnings and 3 errors generated.
当前使用的编译工具链
clang -version clang version 4.0.0-1kord1 (tags/RELEASE_400/rc1) Target: aarch64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin
编译配置参数
./configure \ --host=aarch64-linux-gnu \ --enable-languages=c,c++,fortran,go \ --prefix=/home/.gccb/gcc-13 \ --enable-targets=aarch64-linux-gnu \ --with-gmp=/usr/local \ --with-mpfr=/usr/local \ --with-mpc=/usr/local
解决方向
- 升级Clang版本:Clang 4.0.0是2017年的老旧版本,对现代C特性支持不足。GCC 13源码依赖较新的C标准,旧编译器无法正确处理
obstack_watermark的禁用拷贝逻辑。建议升级到Clang 12+版本,或直接用系统自带的GCC编译GCC(更稳妥)。 - 校验源码完整性:重新拉取
releases/gcc-13分支代码,执行git fetch --tags && git checkout releases/gcc-13,确保无文件缺失或损坏。 - 调整配置参数:
- 删除
--enable-targets=aarch64-linux-gnu,--host已指定目标架构,重复设置易引发冲突。 - 检查GMP、MPFR、MPC版本:GCC 13要求GMP≥6.2.1、MPFR≥4.1.0、MPC≥1.2.1,版本过低则升级对应依赖库。
- 删除
- 切换编译工具链:若系统有GCC 7+版本,执行
CC=gcc CXX=g++ ./configure [你的其他参数]重新配置,用GCC编译GCC可避免兼容性问题。
内容的提问来源于stack exchange,提问作者Michaelzh
相关产品推荐
相关产品推荐

