usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found错误的解决

本文介绍了解决在Centos系统中运行FileZilla时遇到的GLIBCXX_3.4.15版本缺失问题的方法。通过下载并替换libstdc++库文件,成功解决了FileZilla运行时的依赖错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

风信网(ithov.com)原创文章:升级Centos系统之后,运行filezilla时,出现如下错误的提示信息:

./filezilla: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./filezilla)

如果是64位系统报错信息如下

./filezilla: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./filezilla)

原因是没有GLIBCXX_3.4.15版本,或是更高的版本。
输入命令查询一下结果:

[root@localhost ~]# strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

我们看到当前GCC版本中的确没有GLIBCXX_3.4.15。

64位系统命令为:

[root@localhost ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

下载新版本,地址:http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_i386.deb

64位系统:
http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_amd64.deb

假设下载的文件放在/data0/software/。
解压:

[root@localhost software]# ar -x libstdc++6_4.7.2-5_i386.deb && tar xvf data.tar.gz
解压后出现/data0/software/usr目录;
[root@localhost software]# cd  /data0/software/usr/lib/i380-linux-gun
[root@localhost i386-linux-gnu]# cp libstdc++.so.6.0.17 /usr/lib
[root@localhost i386-linux-gnu]# /usr/lib
[root@localhost lib]# rm libstdc++.so.6
[root@localhost lib]# ln libstdc++.so.6.0.17 libstdc++.so.6

注意64位系统为
[root@localhost software]# cd  /data0/software/usr/lib/x86_64-linux-gnu
[root@localhost x86_64-linux-gnu]# cp libstdc++.so.6.0.17 /usr/lib64
[root@localhost x86_64-linux-gnu]# /usr/lib
[root@localhost lib64]# rm libstdc++.so.6
[root@localhost lib64]# ln libstdc++.so.6.0.17 libstdc++.so.6

重新建立软连接,我们再输入命令查询一下结果:

[root@localhost lib]# strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_DEBUG_MESSAGE_LENGTH

已经安装好GLIBCXX_3.4.15啦。

重新切换到filezilla目录并运行,正常啦!./filezilla: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./filezilla)已经解决。


<think>首先,用户的问题是关于解决Node.js运行时错误:"node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21&#39; not found"。这通常发生在升级gcc后,但系统没有使用新版本的动态库。 从系统指令中,我需要: - 所有行内数学表达式用$...$格式,例如变量等。 - 独立公式用$$...$$格式并单独成段。 - 确保LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识,如[^1]。 用户可见层要求: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 参考站内引用: - [^1] 描述了用户升级gcc后运行Node.js时出现错误。 - [^2] 类似错误。 - [^3] 解释问题原因:新gcc的动态库没有替换旧版本。 - [^4] 类似问题,需要更新动态库。 问题原因:升级gcc后,新版本的动态库(如libstdc++.so.6)没有被系统正确链接或使用。旧版本的库缺少所需的GLIBCXX符号(如GLIBCXX_3.4.21)。 解决方案步骤: 1. **确认问题**:检查当前libstdc++.so.6支持的版本。 2. **找到新库位置**:新gcc安装的库通常在/usr/local/lib64或类似路径。 3. **替换或更新链接**:将新库复制到系统库路径或更新符号链接。 4. **验证**:运行Node.js检查错误是否解决。 详细步骤: - 使用命令检查当前库版本:`strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX` - 找到新库:`find / -name "libstdc++.so*" 2>/dev/null` - 替换库:拷贝新库到/usr/lib64/并更新链接。 - 或者使用`ldconfig`更新缓存。 确保安全:操作需要root权限,谨慎修改系统库。 结构回答: 1. **解释问题原因**。 2. **逐步解决方案**。 3. **验证步骤**。 4. **预防措施或注意事项**。 生成相关问题: - 基于此错误,相关问题可能包括:如何升级gcc?如何管理库版本?Node.js依赖问题等。 相关问题例子: 1. 如何安全升级gcc以避免此类问题? 2. 如何检查系统库的版本? 3. Node.js的其他常见运行时错误如何解决? 引用添加:在回答中引用参考段落时,末尾加[^n]。 最终回答用中文。</think>### 解决Node.js运行时错误:GLIBCXX_3.4.21 not found 当您升级gcc后运行Node.js时出现错误 `/usr/lib64/libstdc++.so.6: version &#39;GLIBCXX_3.4.21&#39; not found`,这是因为新gcc生成的动态库未正确替换系统中的旧版本库。Node.js依赖C++ 11特性(需要gcc 4.8+),但系统仍链接到旧版libstdc++.so.6文件,缺少所需符号[^3][^1]。以下是逐步解决方案,操作需root权限,请谨慎执行。 #### 问题原因分析 - 升级gcc(如v5.2.0)后,新动态库(如libstdc++.so.6)默认安装在`/usr/local/lib64`,但系统路径`/usr/lib64/`仍指向旧库。 - Node.js运行时需GLIBCXX_3.4.15及以上版本,旧库不兼容[^3][^4]。 - 验证命令: ```bash strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ``` 输出中若缺少`GLIBCXX_3.4.21`,则确认问题。 #### 解决方案步骤 1. **定位新版本动态库** 查找新gcc安装的库文件: ```bash find / -name "libstdc++.so*" 2>/dev/null ``` 通常路径为`/usr/local/lib64/libstdc++.so.6.0.21`(以gcc 5.2.0为例)[^3][^4]。 2. **替换系统库文件** 将新库复制到系统路径并更新链接: ```bash # 备份旧库(可选但推荐) sudo cp /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak # 复制新库到系统路径 sudo cp /path/to/new/libstdc++.so.6.0.21 /usr/lib64/ # 删除旧符号链接并创建新链接 sudo rm /usr/lib64/libstdc++.so.6 sudo ln -s /usr/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6 ``` 3. **更新动态链接器缓存** 运行`ldconfig`使更改生效: ```bash sudo ldconfig ``` 4. **验证修复结果** - 再次检查库版本: ```bash strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ``` 应输出包含`GLIBCXX_3.4.21`的行。 - 测试Node.js: ```bash node -v ``` 若正常显示版本号(如v4.2.1),则问题解决[^1][^3]。 #### 注意事项 - **风险提示**:错误替换库可能导致系统不稳定。建议在操作前备份关键数据。 - **预防措施**:升级gcc时,使用`sudo make install`确保库文件正确部署到系统路径。 - **替代方案**:若问题持续,考虑通过包管理器(如yum或apt)安装预编译的Node.js版本,避免手动编译依赖[^2]。 此方案基于gcc升级后动态库未更新的常见问题,成功率较高[^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值