关于#linux#的问题:然后运行程序发现缺少GLIBC_2.18,

内网的linux服务器,libstdc++.so.6版本软链接到的6.0.28版本缺少GLIBCXX3.4.29的依赖,
然后从外网拷贝了一个6.0.29放在usr/lib64里配置好权限755,

img

然后运行程序发现缺少GLIBC_2.18,

img

但是6.0.29里存在GLIBC_2.18却不被识别

img

很疑惑

解决了,升级一下glibc的版本就ok了,因为系统的libc.so.6连接到的是2.17版本,确实没有GLCBC_2.18,跟libstdc++.so里的版本没关系,是我弄混了

是这个版本么,确认下路径什么有没有问题

img

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7801147
  • 除此之外, 这篇博客: linux_报错解决_libstdc .so.6 version GLIBCXX_3.4.22 not found中的 报错: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 今天在运行一个软件的时候报错:
    /home/your_user_name/anaconda3/envs/you_env_name/lib/libstdc .so.6: version `GLIBCXX_3.4.22’ not found

    参考以下两个帖子解决了问题:
    https://blog.csdn.net/phdsky/article/details/84104769
    https://blog.csdn.net/fengzhongluoleidehua/article/details/84618540

  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料推断,可能是升级gcc时生成的动态库没有替换旧版本gcc的动态库所致。尝试检查当前运行程序所需的GLIBC版本是否已经存在,如果仍然缺少,则需要更新或替换动态库版本。

    步骤如下: 1. 执行以下命令,检查当前所需的GLIBC版本是否存在于/usr/lib64目录下:

    strings /usr/lib64/libstdc++.so.6 | grep GLIBC 如果缺少的GLIBC版本已经存在,则需要更新或替换动态库版本。如果仍然缺少,则需要参考参考资料中提到的升级gcc生成的最新动态库,并将其复制到/usr/lib64目录下。

    1. 查找编译gcc时生成的最新动态库:

    find / -name "libstdc++.so*" 将最新的动态库版本,例如libstdc++.so.6.0.21复制到/usr/lib64目录下:

    cp /gcc-workspace/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64 修改系统默认动态库的指向,将其软连接重新指向最新动态库。切换工作目录至/usr/lib64:

    cd /usr/lib64 删除原来软连接:

    rm -rf libstdc++.so.6 将默认库的软连接指向最新动态库:

    ln -s libstdc++.so.6.0.21 libstdc++.so.6 重新运行以下命令检查动态库:

    strings /usr/lib64/libstdc++.so.6 | grep GLIBC 检查动态库版本是否已更新并指向正确版本。

    如果仍然存在问题,则可能需要重新编译程序以适配新的GLIBC版本。如果尝试了以上步骤还不能解决问题,则需要进一步查找原因或使用其他解决方案。