Redhat 问题/lib64/libc.so.6: version `GLIBC_2.14' not found

在Ubuntu环境下运行Redhat时遇到错误:/lib64/libc.so.6: version `GLIBC_2.14' not found。可以检查当前glibc版本,并从GUN官网下载缺失的glibc版本。为了避免混淆,建议在家目录新建一个.lib文件夹来安装,并在使用时设置环境变量。
  • ubuntu正常运行redhat报如题错误
[van@oracle app_keymng]$ bin/client.bin
bin/client.bin: /lib64/libc.so.6: version `GLIBC_2.14'  not found (required by bin/client.bin)
  • 查询一下当前glibc 如下:
[van@localhost app_keymng]$ strings /lib64/libc.so.6  |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE

到GUN官网ftp找到你缺少的版本http://ftp.gnu.org/gnu/glibc
这里只有本用户使用这个库,新建一个家目录.lib装起来,省的跟原先的弄混

[van@oracle Downloads]$ wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
[van@oracle Downloads]$ tar -xzvf glibc-2.14.tar.gz
[van@localhost glibc-2.14]$ mkdir ~/.lib
[van@localhost glibc-2.14]$ mkdir build
[van@localhost glibc-2.14]$ cd build
[van@localhost build]$ ../configure  --prefix=/home/van/.lib/glibc-2.14
[van@localhost build]$ make -j4
[van@localhost build]$make install
  • 要使用的时候导入环境变量
[van@localhost build]$export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
[kingbase@gw kingbase]$ uname -r 2.6.32-431.el6.x86_64 =============================================================================== 初始化数据库错误 -------- The beginning of Init Database. Running initcluster.sh... --max-connections=500 /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/Server/bin/initdb) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/libkci.so.5) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/libcrypto.so.1.1) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/libcrypto.so.1.1) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/libcrypto.so.1.1) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/libssl.so.1.1) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/libldap_r-2.4.so.2) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/liblber-2.4.so.2) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/libsasl2.so.3) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/libsasl2.so.3) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/../lib/libgssapi_krb5.so.2) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libkeyutils.so.1: version `KEYUTILS_1.5' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C 009B0014/Server/bin/../lib/../lib/../lib/../lib/libkrb5.so.3) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/../lib/libkrb5.so.3) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/../lib/libkrb5.so.3) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/../lib/libk5crypto.so.3) /opt/Kingbase/ES/V8/Server/bin/initdb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/Kingbase/ES/V8/KESRealPro/V008R006C009B0014/Server /bin/../lib/../lib/../lib/../lib/libkrb5support.so.0)
最新发布
12-16
<think> 嗯,用户遇到了一个很典型的GLIBC版本不兼容问题,从报错信息看是gcc运行时依赖GLIBC_2.38但系统只有旧版本。这通常发生在升级开发工具链后,特别是CentOS等保守系统。 用户提供的两个引用很有意思。引用[1]展示了完整的glibc编译安装过程,但那个slink命令方案风险很大——直接替换/lib64下的核心库容易导致系统崩溃。引用[2]的patchelf方案相对安全,但只适用于单个二进制文件修复。考虑到gcc涉及大量依赖链,可能不适合。 用户上次问过类似问题,看来ta正在维护老系统但需要使用新工具。当前需求更明确:gcc本身需要GLIBC_2.38。这里的关键矛盾在于:CentOS 7默认glibc版本(2.17)太旧,而官方源不提供高版本。 需要排除的思路:1) 盲目升级整个系统不可取;2) 直接替换系统glibc风险过高。较优解应该是容器化方案或非侵入式安装。突然想到devtoolset可能提供较新的gcc而不依赖高版本glibc——赶紧查证确认。 关于技术细节要特别注意:所有路径必须用$...$包裹,比如$LD_LIBRARY_PATH$。编译glibc时的--prefix参数至关重要,必须指定到非系统目录。在给出解决方案时,应该把高风险操作放在最后,优先推荐安全的容器方案。 用户应该是开发者或运维,对linux有基础但可能不熟悉ABI兼容问题。ta的引用显示已经查过资料,但那些方案都不够完善。需要强调每一步的潜在风险,比如编译glibc时-j$(nproc)可能引发内存不足。 </think> 针对您遇到的`gcc`提示`/usr/lib64/libc.so.6: version GLIBC_2.38 not found`错误,以下是完整解决方案,结合引用内容优化安全性和可操作性: --- ### **原因分析** 该错误表明您的系统(如CentOS 7)默认安装的Glibc版本过低(如2.17),而您使用的`gcc`编译依赖更高版本的Glibc2.38)。需升级Glibc或调整环境**避免直接替换系统核心库**(避免系统崩溃风险)。 --- ### **安全解决方案** #### **方法1:容器化方案(推荐)** ```bash # 使用Podman/Docker隔离环境(无需修改宿主系统) podman run -it --name gcc_env registry.access.redhat.com/ubi8/gcc-toolset-13 # 在容器内使用新版gcc gcc --version # 验证版本 ``` > **优势**:完全避免系统库冲突,适合生产环境[^2]。 #### **方法2:非侵入式Glibc安装** ```bash # 1. 下载Glibc源码(以2.38为例) wget https://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.gz tar -xzf glibc-2.38.tar.gz && cd glibc-2.38 # 2. 新建编译目录(隔离系统路径) mkdir build && cd build ../configure --prefix=/opt/glibc-2.38 # 指定独立安装路径 make -j$(nproc) # 3. 安装到自定义目录 make install # 4. 配置gcc使用新库(非全局替换) export LD_LIBRARY_PATH=/opt/glibc-2.38/lib:$LD_LIBRARY_PATH gcc your_program.c -o output # 此时gcc会优先使用新Glibc ``` > **关键安全措施**: > - `--prefix=/opt/glibc-*` 确保不覆盖系统库 > - 仅通过`LD_LIBRARY_PATH`临时生效[^1] #### **方法3:使用开发工具集(DevToolset)** ```bash # CentOS 7适用(提供兼容新版gcc) yum install centos-release-scl yum install devtoolset-12-gcc # 支持GLIBC_2.38+ scl enable devtoolset-12 bash # 临时激活环境 gcc --version # 验证版本 ``` > **注意**:需确认DevToolset是否包含所需Glibc版本。 --- ### **高风险操作(谨慎!)** 若必须全局升级Glibc(仅限测试环境): ```bash # 替换符号链接(引用[1]方案优化) LD_PRELOAD=/opt/glibc-2.38/lib/libc-2.38.so \ln -sf /opt/glibc-2.38/lib/libc-2.38.so /lib64/libc.so.6 ``` > **后果**:可能导致系统命令(如`ls`, `bash`)崩溃!务必先备份系统。 --- ### **根本解决建议** 1. **升级操作系统**:迁移至支持GLIBC 2.38+的系统(如CentOS 8+、Ubuntu 22.04+) 2. **静态编译**:对程序使用`gcc -static`编译,避免动态库依赖 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值