CentOS7.9安装RPM包遇libstdc++依赖错误求助
CentOS 7.9下RPM安装libstdc++.so.6依赖问题排查
问题场景
在CentOS 7.9系统(gcc版本11)中执行rpm -hiv TCGstorageAPI-1.0-1.x86_64.rpm安装RPM包时,触发libstdc++.so.6依赖缺失报错,缺失的依赖项为:
- libstdc++.so.6(CXXABI_1.3.9)(64bit)
- libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
- libstdc++.so.6(GLIBCXX_3.4.26)(64bit)
- libstdc++.so.6(GLIBCXX_3.4.29)(64bit)
已将libstdc++.so.6.0.29放入/lib64和/usr/lib64目录,并创建了指向libstdc++.so.6的软链接,且通过验证确认该版本包含所需的CXXABI_1.3.9和GLIBCXX_3.4.29标识,但安装仍报错。
已执行的验证操作及结果
[root@dist]# strings /usr/lib64/libstdc++.so.6.0.29 | grep GLIBCXX_3.4.29 GLIBCXX_3.4.29 GLIBCXX_3.4.29
[root@dist]# ls /usr/lib64/libstdc++* -l lrwxrwxrwx. 1 root root 19 Dec 22 15:30 /usr/lib64/libstdc++.so -> libstdc++.so.6.0.29 lrwxrwxrwx. 1 root root 19 Dec 22 15:30 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.29 -rwxr-xr-x. 1 root root 995840 Sep 30 2020 /usr/lib64/libstdc++.so.6.0.19 -rwxr-xr-x. 1 root root 16757720 Jan 10 2022 /usr/lib64/libstdc++.so.6.0.28 -rw-r--r--. 1 root root 2386 Jan 10 2022 /usr/lib64/libstdc++.so.6.0.28-gdb.py -rwxr-xr-x. 1 root root 14608032 Dec 22 15:30 /usr/lib64/libstdc++.so.6.0.29 -rw-r--r--. 1 root root 2382 Dec 22 15:30 /usr/lib64/libstdc++.so.6.0.29-gdb.py
[root@dist]# ls /lib64/libstdc++* -l lrwxrwxrwx. 1 root root 19 Dec 22 15:30 /lib64/libstdc++.so -> libstdc++.so.6.0.29 lrwxrwxrwx. 1 root root 19 Dec 22 15:30 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.29 -rwxr-xr-x. 1 root root 995840 Sep 30 2020 /lib64/libstdc++.so.6.0.19 -rwxr-xr-x. 1 root root 16757720 Jan 10 2022 /lib64/libstdc++.so.6.0.28 -rw-r--r--. 1 root root 2386 Jan 10 2022 /lib64/libstdc++.so.6.0.28-gdb.py -rwxr-xr-x. 1 root root 14608032 Dec 22 15:30 /lib64/libstdc++.so.6.0.29 -rw-r--r--. 1 root root 2382 Dec 22 15:30 /lib64/libstdc++.so.6.0.29-gdb.py
排查解决方案
1. 同步RPM数据库与实际库文件版本
RPM依赖检查优先读取系统RPM数据库的记录,而非文件系统的库文件。执行以下命令查看已注册的libstdc++版本:
rpm -q libstdc++
若输出版本低于6.0.29,需安装对应gcc 11编译生成的libstdc++ RPM包(不建议手动拷贝文件,优先通过包管理维护)。
2. 更新动态链接库缓存
手动替换库文件后,需刷新系统动态链接缓存:
ldconfig -v | grep libstdc++.so.6
确认输出中指向的是libstdc++.so.6.0.29。
3. 强制安装并验证运行
跳过依赖检查强制安装RPM包,之后验证程序实际加载的库版本:
rpm -hiv --nodeps TCGstorageAPI-1.0-1.x86_64.rpm
安装完成后检查程序依赖:
ldd /usr/bin/TCGstorageAPI # 替换为实际程序路径
确认输出中libstdc++.so.6指向的是6.0.29版本。
4. 修复库文件权限与SELinux上下文
确保库文件权限与系统原有文件一致,并修复SELinux上下文:
chmod 755 /usr/lib64/libstdc++.so.6.0.29 /lib64/libstdc++.so.6.0.29 restorecon -v /usr/lib64/libstdc++.so.6.0.29 /lib64/libstdc++.so.6.0.29
内容的提问来源于stack exchange,提问作者Rory
相关产品推荐
相关产品推荐

