• 升级libstdc++、libgcc_s.so、libc.so.6


    参考资料:
    https://blog.csdn.net/ltl451011/article/details/7763892/

    https://blog.csdn.net/na_beginning/article/details/53413997


    一、为什么要升级?

    有时候在链接外部动态库的时候,会出以下类似的问题:
    ./bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./bin/mysqld)
    ./bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./bin/mysqld)

    出现这种问题就是因为“编译库的编译器” 和 “编译当前程序的编译器” 版本是不一样的,在具体一点就是因为,当前程序的编译器的版本是比较低的,只要升级一下就可以了。


    二、查询库的版本
    1、
    可通过strings /lib64/libc.so.6 | grep GLIBC_ 查看系统 GLIBC 支持的版本
    可通过strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 查看系统 GLIBCXX 支持的版本

    2、指令安装的,可以这种查询方式
    rpm -qa | grep gdb
    rpm -qa |grep glibc


    3、指令安装的,可以这种卸载方式(以卸载gdb为例)
    rpm -e --nodeps gdb-7.2-83.el6.x86_64


    二、libgcc_s.so跟libstdc++.so的升级,通过升级GCC来实现

    1、下载GCC5.4.0的源码进行编译
    GCC完成升级之后,在系统库目录下,删除旧库的软链接,创建新的软链接,指向新版本的库。

    2、检查系统库目录,配置新的libstdc++.so
    根据编译gcc时的配置,在指向目录下,找到生成的库为libstdc++.so.6.0.21

    在系统库目录下 /lib64/ 检查存不存在libstdc++.so.6.0.21
    不存在 则复制libstdc++.so.6.0.21 到 /lib64/

    检查存不存在libstdc++.so的软连接,将旧的软链接全部删除掉。
    创建新的软链接,指向 /lib64/libstdc++.so.6.0.21

    检查其他的系统库目录


    3、检查系统库目录,配置新的libgcc_s.so
    仿照上面libstdc++.so的操作

     

    三、libc.so.6升级
    参考
    https://blog.51cto.com/12077732/2125618
    https://blog.csdn.net/superyzh/article/details/79472190
    https://www.cnblogs.com/Mrhuangrui/p/7766554.html
    https://www.jianshu.com/p/513e01fbd3e0

    glibc是gnu发布的libc库,即c运行库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。
    glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
    很多linux的基本命令,比如cp, rm, ll,ln等,都得依赖于它,如果操作错误或者升级失败会导致系统命令不能使用,
    严重的造成系统退出后无法重新进入,所以操作时候需要慎重。

    1、下载glibc的源码进行编译
    wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
    使用下面的镜像应该会快点
    wget http://mirrors.ustc.edu.cn/gnu/libc/

    2、检查系统库目录,配置新的libc.so
    根据编译时的配置,在指向目录下,找到生成的库

    检查系统库目录,删除旧库的软链接,创建新库的软链接。


    问题:
    1、https://blog.csdn.net/zhenyuhe/article/details/86737328
    这种方式,相当于从网上下载了一个较新版本的libstdc++.so库,
    替换了系统的旧库,这种方式没有进行验证。

     

  • 相关阅读:
    02---控制移动底座8
    02---控制移动底座7
    02---控制移动底座6
    02---控制移动底座5
    第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
    第四章输入/输出(I/O)4.1I/O涉及的设备及相关概念简介
    1.6 opencv视频操作基础
    1.5快速上手OpenCV图像处理
    02---控制移动底座4
    函数cvtColor
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/10882881.html
Copyright © 2020-2023  润新知