• import tensorflow 报错,CentOS 升级 glibc



    问题描述:

    in[0]: import tensorflow as tf
    
    ImportError: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /usr/local/python2.7/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so)

    # 系统默认 glibc 所支持的版本太低

    解决方法:

    1、检查当前 glibc 版本

    shell > strings /lib64/libc.so.6 | grep GLIBC
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_PRIVATE
    
    shell > ll /lib64/libc.so.6 
    lrwxrwxrwx. 1 root root 12 7月  14 01:57 /lib64/libc.so.6 -> libc-2.12.so

    # 现有 glibc 支持的最高版本为 2.12,我们需要至少 2.15

    2、下载所需 glibc ( Linux 系统及指令都依赖该库,损坏将导致操作系统无法工作 )

    shell > wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.15.tar.gz
    shell > tar zxf glibc-2.15.tar.gz
    shell > mkdir glibc-2.15/build; cd glibc-2.15/build
    shell > ../configure --prefix=/usr/local/glibc-2.15 && make && make install

    # 需要几分钟时间、耐心等待

    3、替换软链接

    shell > rm -rf /lib64/libc.so.6
    shell > ln -s /usr/local/glibc-2.15/lib/libc.so.6 /lib64/
    ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

    # 你会发现,除 cd 外的指令几乎不能使用了,这是因为他们都依赖于 glibc !

    shell > LD_PRELOAD=/usr/local/glibc-2.15/lib/libc.so.6 ln -s /usr/local/glibc-2.15/lib/libc.so.6 /lib64/
    
    shell > strings /lib64/libc.so.6 | grep GLIBC
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_2.13
    GLIBC_2.14
    GLIBC_2.15
    GLIBC_PRIVATE
    
    shell > ll /lib64/libc.so.6 
    lrwxrwxrwx. 1 root root 35 Jul 14 14:02 /lib64/libc.so.6 -> /usr/local/glibc-2.15/lib/libc.so.6

    # 软链接已经替换,且系统指令也已经恢复

    shell > LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

    # 如升级不成功,使用上面语句恢复

    报错管理:

    1、glibc 版本太新或 autoconf 版本太旧 ( glibc 换低版本 )

    configure: error: 
    *** These critical programs are missing or too old: as ld compiler
    *** Check the INSTALL file for required versions.

    ……………………………………………………………………………………………………………………………………………………………………………………

    # 升是升完了,但是不能用,我换了7、8个版本,都不行。要么安装不成功、要么提示段错误、要么软链接切换有问题。

    # CentOS 6.x glibc 版本为 2.12,CentOS 7.x glibc 版本为 2.17

    # 最后我换系统了,用 C7 或 Ubuntu !真闹心

  • 相关阅读:
    24. Swap Nodes in Pairs(M);25. Reverse Nodes in k-Group(H)
    61. Rotate List(M);19. Remove Nth Node From End of List(M)
    素数筛选法(prime seive)
    哈夫曼树;二叉树;二叉排序树(BST)
    sort与qsort的区别与联系
    贪心算法
    First non-repeating character in a stream
    transform
    C++11 & C++14 & C++17新特性
    开个玩笑
  • 原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/7170922.html
Copyright © 2020-2023  润新知