zoukankan      html  css  js  c++  java
  • ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found (required by /usr/local/python37/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)

    一 问题背景

    这个错误的出现往往与我前面的一篇文章 ImportError: /lib64/libm.so.6: version `CXXAB_1.3.8.' not found (required by /usr/local/python37/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so) 的错误共同出现,这两个错误不仅看似相似,解决办法相似,而且还有极大的关联性,一不小心,可能就会陷入极难修复的境地。

    二 问题原因

    都是由于linux的库比较老旧,而现代技术需要使用新的版本造成的,最后归结一下,就是需要升级gcc和glibc这两个内置库,这两个库必须手动升级,作为一个野生运维人员,我一直相信,凡手动,必出漏洞,这不是,为了这个问题,我花了好几天的时间,终于修复。


    三 解决重点

    1. gcc的版本不要太高,gcc-7.2.0.tar.xz 这个版本即可,如需查看相关链接请点击 ImportError: /lib64/libm.so.6: version `CXXAB_1.3.8.' not found (required by /usr/local/python37/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so) 这篇文章
    2. gcc只安装一半就可以了,意思是,make完就可以了,不需要make install,这是使用 locate libstdc++.so 查看gcc-7.2.0目录下的libstdc++.so.6库,复制粘贴到lib64下。
    3. glibc的安装之前一直出错,可能就是因为我安装了gcc9的版本,现在gcc还是4.8.5的版本,glibc-2.23很轻松就可以安装了,具体安装细节如下。
    # 1 无bug安装过程
    wget http://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
    tar xf glibc-2.23.tar.gz 
    cd glibc-2.23/
    mkdir build 
    cd build/
    ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    make 
    make install
    ldd --version
    
    # 2 大部分时候make之后需要这一步
    make之后 make install之前打开新窗口去创建一个软链接不然install的时候会报错
    cd /lib64
    unlink libm.so.6
    ln -s libm-2.23.so libm.so.6
    
    # 3 可能出现的错误和解决方案
    “”“
    make的错误两个文件缺少一对 {}
    如何快速找到需要添加的位置, 进入vim后  直接输入 / 符号 后面接你要搜索的内容,类似浏览器的Ctrl+F查找
    ”“”
    / *loc != NULL  快速匹配 *loc != NULL 
    
    # 错误1
    vim /home/glibc-2.23/nis/nis_call.c
       if (*loc != NULL)
    +  {  #这里添加一个{号
         for (i = 1; i < 16; ++i)
           if (nis_server_cache[i] == NULL)
     	{
    @@ -690,6 +691,7 @@ nis_server_cache_add (const_nis_name nam
     	       || ((*loc)->uses == nis_server_cache[i]->uses
     		   && (*loc)->expires > nis_server_cache[i]->expires))
     	loc = &nis_server_cache[i];
    +  }  #这里添加一个} 号
       old = *loc;
    
    # 错误2 
    vim  /home/glibc-2.23/stdlib/setenv.c   
       
       ep = __environ;
       if (ep != NULL)
    +  { #这里添加一个{号
         while (*ep != NULL)
           if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
     	{
    @@ -290,6 +291,7 @@ unsetenv (const char *name)
     	}
           else
     	++ep;
    +  }  #这里添加一个}号
     
       UNLOCK;   
    
  • 相关阅读:
    curl.class.php方便使用
    php发送邮件
    php部分被弃用方法的代替方法
    正则表达式匹配
    php xml常用函数的集合及四种方法
    PHP5中使用PDO连接数据库的方法
    http协议的状态码
    MySQL数据库中的Date,DateTime和TimeStamp类型
    php中json_decode()和json_encode()的使用方法
    UIIabel自适配高度
  • 原文地址:https://www.cnblogs.com/mayite/p/13390579.html
Copyright © 2011-2022 走看看