python - importerror lib64 libc so 6 version glibc_2 16 not found




Ubuntu 12.04のPython 2.7でTensorflowをインポート中にエラーが発生しました。 「GLIBC_2.17が見つかりません」 (9)

PythonでTensorflowバインディングを正常にインストールしました。 しかし、Tensorflowをインポートしようとすると、次のエラーが発生します。

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found (required by /usr/local/lib/python2.7/dist-packages/tensorflow/python/_pywrap_tensorflow.so)

GLIBC_2.15を2.17に更新しようとしましたが、うまくいきません。


@ThéoTの回答にあるリンクは機能しなくなったため、最終的に機能するものを見つけるためにいくつかの代替手段を試す必要がありました。

mkdir ~/my_libc_env
cd ~/my_libc_env
wget http://launchpadlibrarian.net/137699828/libc6_2.17-0ubuntu5_amd64.deb
wget http://launchpadlibrarian.net/137699829/libc6-dev_2.17-0ubuntu5_amd64.deb
wget ftp://ftp.icm.edu.pl/vol/rzm5/linux-slc/centos/7.0.1406/cr/x86_64/Packages/libstdc++-4.8.3-9.el7.x86_64.rpm
ar p libc6_2.17-0ubuntu5_amd64.deb data.tar.gz | tar zx
ar p libc6-dev_2.17-0ubuntu5_amd64.deb data.tar.gz | tar zx
rpm2cpio libstdc++-4.8.3-9.el7.x86_64.rpm| cpio -idmv

テンソルフローでPythonコードを実行する

LD_LIBRARY_PATH="$HOME/my_libc_env/lib/x86_64-linux-gnu/:$HOME/my_libc_env/usr/lib64/" $HOME/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so `which python` your_program.py

Pythonでtensorflowをインポートすると、「バージョン `GLIBC_2.14 'が見つかりません」と表示されます。 virtualenvを使用してCentos6.6上のpython3.5でテンソルフローをインポートすることができました:

mkdir ~/tensorflow
cd ~/tensorflow
virtualenv --system-site-packages -p python3.5 ~/tensorflow
source bin/activate
wget http://launchpadlibrarian.net/137699828/libc6_2.17-0ubuntu5_amd64.deb
wget http://launchpadlibrarian.net/137699829/libc6-dev_2.17-0ubuntu5_amd64.deb
wget ftp://195.220.108.108/linux/mageia/distrib/4/x86_64/media/core/updates/libstdc++6-4.8.2-3.2.mga4.x86_64.rpm
wget https://rpmfind.net/linux/centos/7.4.1708/updates/x86_64/Packages/glibc-2.17-196.el7_4.2.i686.rpm
ar p libc6_2.17-0ubuntu5_amd64.deb data.tar.gz | tar zx
ar p libc6-dev_2.17-0ubuntu5_amd64.deb data.tar.gz | tar zx
rpm2cpio libstdc++6-4.8.2-3.2.mga4.x86_64.rpm | cpio -idmv
rpm2cpio glibc-2.17-196.el7_4.2.i686.rpm | cpio -idmv
pip3.5 install --upgrade tensorflow
export PYTHONPATH="$HOME/tensorflow/lib/python3.5/site-packages/"
alias tfpython='LD_LIBRARY_PATH="$HOME/tensorflow/lib/x86_64-linux-gnu/:$HOME/tensorflow/usr/lib64/" $HOME/tensorflow/lib/x86_64-linux-gnu/ld-2.17.so /usr/local/bin/python3.5'
tfpython

Theo Trouillonの「弱体化」ソリューションへの注意。 Tensorflow 0.6.0にのみ適用されます。 Tensorflow 0.9.0に適用したい場合は、より扱いにくくなります。 私の場合は、CPUモード、Centos 6.7で、GLIBC 2.12 GLIBCXX 3.4.13でした。

tensorflowのインストール:

pip uninstall protobuf 
pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl

'weakifying'コードは変更する必要があります:

TENSORFLOW_DIR=`python -c "import imp; print(imp.find_module('tensorflow')[1])"`
for addr in 0x376e34 0x376e94 0x376ef4 0x376f14 0x376f24 0x376f44 0x376f54 ; do printf '\x02' | dd conv=notrunc of=${TENSORFLOW_DIR}/python/_pywrap_tensorflow.so bs=1 seek=$((addr)) ; done
for addr in 0x93aa4 0x93b04 ; do printf '\x02' | dd conv=notrunc of=${TENSORFLOW_DIR}/contrib/layers/python/ops/_bucketization_op.so bs=1 seek=$((addr)) ; done
for addr in 0x95bec 0x95c4c ; do printf '\x02' | dd conv=notrunc of=${TENSORFLOW_DIR}/contrib/layers/python/ops/_sparse_feature_cross_op.so bs=1 seek=$((addr)) ; done
for addr in 0x9ffec 0x9fffc 0xa005c ; do printf '\x02' | dd conv=notrunc of=${TENSORFLOW_DIR}/contrib/metrics/python/ops/_set_ops.so bs=1 seek=$((addr)) ; done
for addr in 0x96aa4 0x96b04 0x96b24; do printf '\x02' | dd conv=notrunc of=${TENSORFLOW_DIR}/contrib/linear_optimizer/python/ops/_sdca_ops.so bs=1 seek=$((addr)) ; done

また、新しいマシンでコードを生成するスタブに次のコードを追加する必要があります。

mkdir my_include/bits
cp libstdc++-v3/include/bits/shared_ptr_atomic.h my_include/bits/
cp libstdc++-v3/include/std/memory my_include/
gcc -I$PWD/my_include -std=c++11 -fpermissive -s -shared -o ${MYSTUBS}/shared_ptr.so -fPIC -fno-builtin ./libstdc++-v3/src/c++11/shared_ptr.cc
gcc -I$PWD/my_include -std=c++11 -fpermissive -s -shared -o ${MYSTUBS}/list.so -fPIC -fno-builtin ./libstdc++-v3/src/c++98/list.cc
echo "
#include <unistd.h>
#include <stdlib.h>
char * secure_getenv (const char *name) {
          if ((getuid () == geteuid ()) && (getgid () == getegid ())) return getenv (name); else  return NULL;
}" > getenv.cc
gcc -I$PWD/my_include  -std=c++11 -fpermissive -s -shared -o    ${MYSTUBS}/getenv.so -fPIC -fno-builtin getenv.cc

もちろん、最終的な実行中のコードを変更して、追加のスタブを含める必要があります。

LD_PRELOAD="$MYSTUBS/list.so:$MYSTUBS/mylibc.so:$MYSTUBS/shared_ptr.so:$MYSTUBS/getenv.so:$MYSTUBS/random.so:$MYSTUBS/hash_bytes.so:$MYSTUBS/chrono.so:$MYSTUBS/hashtable.so:$MYSTUBS/bad_function.so:$LIBSTDCPP" python  ${TENSORFLOW_DIR}/models/image/mnist/convolutional.py

このエラーは主に、GNU C-Libraryが最新でない場合に発生します。 実行しているバージョンを確認するには、シンプルな

$ ldd --version

出力は次のようになります。

ldd (Ubuntu EGLIBC 2.19-0ubuntu6.6) 2.19
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

2.19はGLIBCバージョンです。 アップグレードするには、GNU-CライブラリプロジェクトのWebサイトにアクセスして、最新バージョンをダウンロードできます。 最新のglibcへのリンクはこちらです: GNU-Cライブラリダウンロード この回答を書いている時点で、 最新の安定版は2.22 でした。

Ubuntu 12.04と14.04の両方でtensorflowを実行してみました。 Ubuntu 14.04では、デフォルトでglibc 2.19がインストールされているため、この問題は発生しません。

それが役に立てば幸い。


ルート権限を持たずに、glibc 2.12を使用してCentOS 6.5にtensorflow 0.12rc0をインストールできました。 単にpipを介してtensorflowバイナリをインストールすると、GLIBCバージョンにも関連するエラーが発生しました。

基本的に、これに対処する方法には4つのオプションがあります(それぞれに長所と短所があります)。

オプション1-システムGLIBCをグローバルにアップグレードします。

これは おそらく最良のオプション です 。システム がこれをサポートしている 場合 、root権限があり、このアップグレードが何らかの奇妙な理由で何も壊さないと確信しています。 最終的に、これはLinuxディストリビューション全体のアップグレードになります。 Here 、人気のあるディストリビューションのデフォルトGLIBCバージョンの素敵な短いリストです。

オプション2-2番目のGLIBCをシステムに追加します

バイナリをコンパイルまたはダウンロードします 。 最もシンプルでシンプルなオプション。 特に、 いくつかの単純なスクリプト 実行 するだけでよい場合。

  • 同じシステムで複数のバージョンのglibcを使用すること は可能 ですが、慎重に行う必要があります。
  • すべての変更が仮想環境に限定される場合、システムを破壊することはありません。
  • 以前にインストール/コンパイルされた多くのプログラムは、古いGLIBCに依存している可能性がありますが、新しい環境(Python IDEなど)で クラッシュするだけ です。 「lc」、「cd」などの最も基本的なbashコマンドを含む
  • 重大なメモリリークの よう 他の副作用も考えられます。
  • したがって、たとえば .bashrc を介し て、通常の環境に新しいGLIBCを追加すること は非常に悪い考えです。
  • 一方、新しい仮想環境で特定のツールが必要な場合は 、新しいGLIBCにリンクして ツールを 再コンパイル できます。 それで、あなたの新しい環境でそれは問題なく動作するでしょう。
  • しかし、個人的には、新しい環境で必要なものすべてを再コンパイルするのをあきらめました(ルートとパッケージマネージャーなし)。
  • GLIBC開発者は、新しいGLIBCビルドをテストするために、 わずかに異なるアプローチ を公​​式に提供しています。

オプション3-パッチテンソルフロー

This はTF 0.6.0で機能する可能性がありますが、新しいテンソルフローバージョンがリリースされるたびに、最初からやり直す必要があります。 例えば、 here は0.9.0の修正です。

オプション4-ソースからのテンソルフローのコンパイル

ソースから再コンパイルし、既存のGLIBCに対してリンクすると、新しいGLIBCは不要になります。 どういうわけか、このオプションはここのどの回答でもまだ言及されていません。 私見、これは「 一般的に 」と「特にテンソルフロー用」の両方の最良のオプションです。

  • これはr0.11で問題なく機能し、おそらく何年も機能しますが、理論的には、古いバージョンにはない新しいGLIBC機能を実際に使用することに決めた場合、新しいテンソルフローバージョンで壊れる可能性があります。
  • 正直に言うと、特に古いシステムでは、ソースからテンソルフローを構築するのは簡単ではありません。

「古いシステムでのテンソルフローの構築」の概要:

公式ガイドには「 ソースからのインストール 」セクションがありますが、古いシステムでビルドするにはいくつかのトリックが必要です。 ここでは、root権限を持っていないことを前提としています(もしあれば、おそらくパッケージマネージャーで同じ事前要求をインストールできるので、ソースから手動でビルドするのではなく)。

よく文書化された2つの成功事例を見つけました: #1#2 、および公式githubのいくつかの有用な投稿(主にバイナリ内でリンクするライブラリのセットについて): #1#2#3#4 。 私の場合、TFを正常にコンパイルするには、そこに記述されているトリックを組み合わせる必要がありました。

  1. まず、 gcc --versionverify し、c ++ 11をサポートしていることを verify します。 私のものは4.4.7だったので、動作しません。 gcc-4.9.4ソースコードを downloaded コンパイルしました 。 この手順は非常に簡単ですが、コンパイル自体には数時間かかる場合があります。 bazelの問題の回避策 asasld および nm への ハードコーディングされたパス を使用し as gccをコンパイルしました。 ただし、別の回避策を試すこともできます:( 2 )。

    #!/bin/sh
    
    unset LIBRARY_PATH CPATH C_INCLUDE_PATH 
    unset PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH
    
    cd gcc-4.9.4
    ./contrib/download_prerequisites
    
    mkdir objdir
    cd objdir
    
    
    # I've added --disable-multilib to fix the following error:
    # /usr/bin/ld: crt1.o: No such file: No such file or directory
    # collect2: ld returned 1 exit status
    # configure: error: I suspect your system does not have 32-bit 
    # developement libraries (libc and headers). If you have them,
    # rerun configure with --enable-multilib. If you do not have them, 
    # and want to build a 64-bit-only compiler, rerun configure 
    # with --disable-multilib.           
    
    ../configure --prefix=$HOME/opt/gcc-4.9.4 \
                 --disable-multilib \
                 --disable-nls \
                 --enable-languages=c,c++ \
                 --with-ld=/usr/bin/ld \
                 --with-nm=/usr/bin/nm \
                 --with-as=/usr/bin/as
    
    make        
    make install
  2. java --version 確認してください。 BazelにはJDK 8が必要で、必要に応じてインストールします。 (bazel-0.4.1用にjdk7関連のダウンロードをまだ provide ていますが、非推奨と見なされているようです)

  3. 必要な環境変数を使用して、別の use_gcc_4.9.4.sh ファイルを作成しました。 この新しいコンパイラに関連する何かが必要なときは、 source ./use_gcc_4.9.4.sh を使用します。

    #!/bin/sh
    this=$HOME/opt/gcc-4.9.4
    export PATH=$this/bin:$PATH
    export CPATH=$this/include:$CPATH
    export LIBRARY_PATH=$this/lib:$LIBRARY_PATH
    export LIBRARY_PATH=$this/lib64:$LIBRARY_PATH
    export LD_LIBRARY_PATH=$this/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$this/lib64:$LD_LIBRARY_PATH
  4. 現在のbazelバイナリ(0.4.1)に はGLIBC 2.14が必要な ので 、ソースからbazel コンパイルする 必要があり ます(新しいgccを使用)。 ターゲットマシン上 で実行できるスレッドの数が非常に限られて いる場合を除き、正常に動作します。 ( #1 投稿ではいくつかの追加の回避策を説明していますが、私の場合は、おそらくbazelコードの最近の更新が原因で必要ありませんでした。)

  5. tensorflowソースコード git clone https://github.com/tensorflow/tensorflow 取得し、必要な前提条件(CUDA、cuDNN、pythonなど)をインストールします。 公式ガイドを 参照してください。

  6. デフォルトのシステムgccを使用していない場合(たとえば、上記のように新しいgccをコンパイルする必要がある場合)、 #4tensorflow/third_party/gpus/crosstool/CROSSTOOL.tpl 59行目 に追加 #4

    linker_flag: "-L/home/username/localinst/opt/gcc-4.9.4/lib64"
    linker_flag: "-Wl,-rpath,/home/username/localinst/opt/gcc-4.9.4/lib64"

    この手順がなければ、次のようなエラーメッセージが表示される可能性があります。

    # ERROR: /home/username/localdistr/src/tensorflow/tensorflow/tensorflow/core/debug/BUILD:33:1: null failed: protoc failed: error executing command bazel-out/host/bin/external/protobuf/protoc '--cpp_out=bazel-out/local_linux-py3-opt/genfiles/' '--plugin=protoc-gen-grpc=bazel-out/host/bin/external/grpc/grpc_cpp_plugin' ... (remaining 8 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.
    # bazel-out/host/bin/external/protobuf/protoc: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by bazel-out/host/bin/external/protobuf/protoc)
    # bazel-out/host/bin/external/protobuf/protoc: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by bazel-out/host/bin/external/protobuf/protoc)
    # bazel-out/host/bin/external/protobuf/protoc: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by bazel-out/host/bin/external/protobuf/protoc)
  7. 最後に、GLIBCの依存関係を回避するために、 -lrt リンカーフラグを追加して(場合によっては -lm も)、いくつかのライブラリを静的にリンクする必要があります。 別の方法でこれを追加することを提案している複数の投稿を見つけました:

    • #1 経由(合理的に聞こえるかもしれませんが、どういうわけか現在のテンソルフローバージョンでは動作しません)、
    • #3 経由(動作しているかどうかは #3 ませんが、これは便利に見えません-このファイルはビルドの試行中にのみ作成されます)
    • "third_party/gpus/crosstool/CROSSTOOL.tpl" (前の手順で編集したのと同じファイル、すでに追加した行のすぐ下)。

      linker_flag: "-lrt"
      linker_flag: "-lm"
    • #1 経由(私にとっては機能しますが、もう1つのファイルを編集する必要があるため、あまり便利ではありません。前のポイントと100%同等であるかどうかは #1 ません)

    -lrt を使用しないと、 import tensorflowimport tensorflow しようとして、GLIBCバージョン固有のエラーが再度発生し import tensorflow

    # ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/username/anaconda3/envs/myenvname/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so)

    -lm を使用しないと、 maybe -lm する可能性があります(私にとっては必要ないことが判明しました)。

  8. ビルドプロセスを実行します。

    source ./use_gcc_4.9.4.sh
    ./configure
    bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    pip install --upgrade /tmp/tensorflow_pkg/tensorflow-0.12.0rc0-cp35-cp35m-linux_x86_64.whl
  1. 次の単純なpythonスクリプトを実行して、最も基本的なものが機能しているかどうかをテストしてください。

    import tensorflow as tf
    hello = tf.constant('Hello, TensorFlow!')
    sess = tf.Session()
    print(sess.run(hello))
    
    a = tf.constant(10)
    b = tf.constant(32)
    print(sess.run(a + b))

上記の答えは問題ありませんが、それを行った後でもまだいくつかの問題に直面しました。 私はrhelの@Theo回答のように続き、いくつかのエラーをスローしたLD_LIBRARY_PATHをエクスポートしようとしましたが、LD_LIBRARY_PATHにはLD_PRELOADも含まれています

mkdir libstdc
cd libstdc
rpm2cpio ../libstdc++-4.8.3-9.el7.x86_64.rpm| cpio -idmv
LD_LIBRARY_PATH="$HOME/my_libc_env/lib/x86_64-linux-gnu/:$HOME/my_libc_env/lib64/" LD_PRELOAD="$HOME/my_libc_env/libstdc/usr/lib64/libstdc++.so.6.0.19" $HOME/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so `which python`

Pythonの実行中は常にこれを行う必要があるため、これらの変数をロードしてPythonインタープリターを呼び出すスクリプトを作成します

vim tmp.sh

LD_LIBRARY_PATH="$HOME/my_libc_env/lib/x86_64-linux-gnu/:$HOME/my_libc_env/lib64/" LD_PRELOAD="$HOME/my_libc_env/libstdc/usr/lib64/libstdc++.so.6.0.19" $HOME/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so `which python`

私のソリューションは、Theo Tのソリューションに似ています。 Xubuntu 12.04(CAELinux 2013)用に微調整されていますが

sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.6.0-cp27-none-linux_x86_64.whl
sudo su
# prompt for password
TENSORFLOW_DIR=`python -c "import imp; print(imp.find_module('tensorflow')[1])"`
for addr in 0xC6A93C 0xC6A99C 0xC6A9EC 0xC6AA0C 0xC6AA1C 0xC6AA3C; do printf '\x02' | dd conv=notrunc of=${TENSORFLOW_DIR}/python/_pywrap_tensorflow.so bs=1 seek=$((addr)) ; done

readelf -V ${TENSORFLOW_DIR}/python/_pywrap_tensorflow.so
exit

mkdir ~/.my_stubs
cd ~/.my_stubs
MYSTUBS=~/.my_stubs


printf "#include <time.h>\n#include <string.h>\nvoid* memcpy(void *dest, const void *src, size_t n) {\nreturn memmove(dest, src, n);\n}\nint clock_gettime(clockid_t clk_id, struct timespec *tp) {\nreturn clock_gettime(clk_id, tp);\n}" > mylibc.c
gcc -s -shared -o mylibc.so -fPIC -fno-builtin mylibc.c

printf "#include <functional>\nvoid std::__throw_bad_function_call(void) {\nexit(1);\n}" > bad_function.cc
gcc -std=c++11 -s -shared -o bad_function.so -fPIC -fno-builtin bad_function.cc

git clone https://github.com/gcc-mirror/gcc.git

cd gcc
mkdir my_include
mkdir my_include/ext
cp libstdc++-v3/include/ext/aligned_buffer.h my_include/ext
gcc -I$PWD/my_include -std=c++11 -fpermissive -s -shared -o $MYSTUBS/hashtable.so -fPIC -fno-builtin libstdc++-v3/src/c++11/hashtable_c++0x.cc
gcc -std=c++11 -fpermissive -s -shared -o $MYSTUBS/chrono.so -fPIC -fno-builtin libstdc++-v3/src/c++11/chrono.cc
gcc -std=c++11 -fpermissive -s -shared -o $MYSTUBS/random.so -fPIC -fno-builtin libstdc++-v3/src/c++11/random.cc
gcc -std=c++11 -fpermissive -s -shared -o $MYSTUBS/hash_bytes.so -fPIC -fno-builtin ./libstdc++-v3/libsupc++/hash_bytes.cc

次の2つの手順は、tensorflow / models / image / mnistディレクトリにあるconvolution.pyスクリプトを実行します。

LIBSTDCPP=`ldconfig -p | grep libstdc++.so.6 | grep 64 | cut -d' ' -f4` #For 64bit machines
LD_PRELOAD="$MYSTUBS/mylibc.so:$MYSTUBS/random.so:$MYSTUBS/hash_bytes.so:$MYSTUBS/chrono.so:$MYSTUBS/hashtable.so:$MYSTUBS/bad_function.so:$LIBSTDCPP" python ${TENSORFLOW_DIR}/models/image/mnist/convolutional.py

これらの依存関係を減らしてPythonを常にロードする場合は、以下の手順でこれを.bashrcファイルに追加するだけです。

echo "LIBSTDCPP=`ldconfig -p | grep libstdc++.so.6 | grep 64 | cut -d' ' -f4`" >> ~/.bashrc
echo alias python="'"LD_PRELOAD='"''$'MYSTUBS/mylibc.so:'$'MYSTUBS/random.so:'$'MYSTUBS/hash_bytes.so:'$'MYSTUBS/chrono.so:'$'MYSTUBS/hashtable.so:'$'MYSTUBS/bad_function.so:'$'LIBSTDCPP'"' python"'" >> ~/.bashrc

また、ipythonがある場合:

echo alias ipython="'"LD_PRELOAD='"''$'MYSTUBS/mylibc.so:'$'MYSTUBS/random.so:'$'MYSTUBS/hash_bytes.so:'$'MYSTUBS/chrono.so:'$'MYSTUBS/hashtable.so:'$'MYSTUBS/bad_function.so:'$'LIBSTDCPP'"' ipython"'" >> ~/.bashrc

基本的に、サイトパッケージではなくdist_packagesで行われるPythonインストールに更新しました。 また、 gcc-mirror のネイティブgitページではなく、 gcc-mirror からクローンを作成します。 残りはすべて同じです。

最後のいくつかの手順により、pythonまたはipythonを実行するたびに、依存関係が軽減されてロードされるようになります。


私は BR_Userソリューション を試してみ ましたが 、まだ迷惑でした:

ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found

私はCentOS 6.7を使用していますが、更新されたc ++標準ライブラリがないため、BR_Userソリューションに基づいて正しいlibstdc ++パッケージを抽出しましたが、仮想環境は必要ありません。

あなたがすでにテンソルフローをインストールしていると仮定すると、それは与えます:

mkdir ~/my_libc_env
cd ~/my_libc_env
wget http://launchpadlibrarian.net/137699828/libc6_2.17-0ubuntu5_amd64.deb
wget http://launchpadlibrarian.net/137699829/libc6-dev_2.17-0ubuntu5_amd64.deb
wget ftp.riken.jp/Linux/scientific/7.0/x86_64/os/Packages/libstdc++-4.8.2-16.el7.x86_64.rpm
ar p libc6_2.17-0ubuntu5_amd64.deb data.tar.gz | tar zx
ar p libc6-dev_2.17-0ubuntu5_amd64.deb data.tar.gz | tar zx
rpm2cpio libstdc++-4.8.2-7mgc30.x86_64.rpm| cpio -idmv

そして、次を使用してPythonを実行します:

LD_LIBRARY_PATH="$HOME/my_libc_env/lib/x86_64-linux-gnu/:$HOME/my_libc_env/usr/lib64/" $HOME/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so `which python`

それが機能しない場合、 別の解決策 がありますが、あなたはそれを気に入らないでしょう。


https://.com/a/34897674/5929065 ソリューションを試しましたが、完全に機能しました。 ただし、libstdc ++-4.8.2-7ダウンロードリンクにはアクセスできません。次のページから新しいリンクを選択してください: http://rpm.pbone.net/index.php3/stat/4/idpl/31981489/dir/centos_7/com/libstdc++-4.8.5-4.el7.x86_64.rpm.html : http://rpm.pbone.net/index.php3/stat/4/idpl/31981489/dir/centos_7/com/libstdc++-4.8.5-4.el7.x86_64.rpm.html

私のために、私はこれを使用します:

wget ftp://mirror.switch.ch/pool/4/mirror/centos/7.2.1511/os/x86_64/Packages/libstdc++-4.8.5-4.el7.x86_64.rpm





tensorflow