You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7.4编译GCC12.1.0时libstdc++.so.6缺失GLIBCXX版本标识问题

GCC 12.1.0编译后libstdc++.so.6缺失GLIBCXX版本标识的问题解决

问题原因

GCC 10及后续版本默认启用了--enable-gnu-unique-object编译选项,该选项依赖GNU ld的unique object特性。但CentOS 7.4自带的ld版本为2.25,不支持该特性,导致编译生成的libstdc++.so.6无法正常生成GLIBCXX系列版本符号,仅保留GLIBCXX_FORCE_NEW等通用标识。而GCC 9.x及更早版本默认未开启该选项,因此不存在此问题。

解决方法

1. 调整编译配置参数

在配置GCC编译时,添加--disable-gnu-unique-object参数关闭不兼容的特性,示例配置命令如下:

# 进入编译目录(假设已解压gcc源码到gcc-12.1.0目录,新建build目录)
cd build
../gcc-12.1.0/configure --prefix=/opt/gcc-12.1.0 \
                        --disable-multilib \
                        --disable-gnu-unique-object \
                        --with-default-libstdcxx-abi=gcc4-compatible \
                        --enable-languages=c,c++
  • --prefix:指定GCC安装路径,根据实际需求修改;
  • --disable-multilib:关闭多架构支持,适合HPC单架构环境;
  • --disable-gnu-unique-object:核心修复参数,禁用导致版本符号丢失的特性;
  • --enable-languages:指定编译支持的语言,按需添加。

2. 安装编译依赖

确保CentOS 7.4环境具备完整编译依赖:

yum install -y gcc gcc-c++ make wget bzip2 flex bison gmp-devel mpfr-devel libmpc-devel

3. 重新编译安装

使用多线程加速编译,完成后安装:

make -j$(nproc)
make install

4. 验证修复效果

安装完成后,检查libstdc++.so.6的版本符号:

strings /opt/gcc-12.1.0/lib64/libstdc++.so.6 | grep GLIBCXX_

此时应能看到完整的GLIBCXX_3.4.xx系列版本标识,说明问题已修复。

内容的提问来源于stack exchange,提问作者Cloudac7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:17:10