Сборка TensorFlow из исходного кода в Ubuntu 16.04 с графическим процессором: "GLIBCXX_3.4.20" не найден
Я нахожусь на Ubuntu 16.04 и пытаюсь собрать TensorFlow с поддержкой GPU из источника в соответствии с этим. Все работает нормально до шага "Build TensorFlow", на котором я выполняю:
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
Компиляция обнаруживает ошибку с выводом:
ERROR: /home/thomas/tensorflow/tensorflow/core/BUILD:978:28: Executing genrule //tensorflow/core:proto_text_srcs_all failed: bash failed: error executing command /bin/bash -c ... (remaining 1 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.
bazel-out/host/bin/tensorflow/tools/proto_text/gen_proto_text_functions: /home/thomas/anaconda2/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by bazel-out/host/bin/tensorflow/tools/proto_text/gen_proto_text_functions)
bazel-out/host/bin/tensorflow/tools/proto_text/gen_proto_text_functions: /home/thomas/anaconda2/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by bazel-out/host/bin/tensorflow/tools/proto_text/gen_proto_text_functions)
bazel-out/host/bin/tensorflow/tools/proto_text/gen_proto_text_functions: /home/thomas/anaconda2/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by bazel-out/host/bin/tensorflow/tools/proto_text/gen_proto_text_functions)
Target //tensorflow/tools/pip_package:build_pip_package failed to build
Use --verbose_failures to see the command lines of failed build steps.
Я подозреваю, что ошибка имеет какое-то отношение к анаконде, так как bazel, похоже, ищет libstdC++. Поэтому из ~/anaconda2/lib.
2 ответа
РЕДАКТИРОВАТЬ: решение Feynman27 кажется чище, попробуйте сначала.
Была такая же проблема. Эти шаги решили ее для меня (root, добавьте sudo при необходимости):
Получите новейшую версию libstdC++ 6 (НЕ ТРЕБУЕТСЯ):
add-apt-repository ppa:ubuntu-toolchain-r/test apt-get update apt-get upgrade
Обновите символические ссылки в ananconda, я сделал это в моем python2 env в anaconda, может быть, вам нужно сделать это в ~/anaconda/lib напрямую:
cd ~/anaconda2/envs/python2/lib mv libstdc++.so libstdc++.so.backup mv libstdc++.so.6 libstdc++.so.6.backup ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6