首页 文章

构建TensorFlow:bazel在非标准目录中找不到libstdc

提问于
浏览
3

我正在尝试使用Scientific Linux 7.2上的bazel 0.5.1,gcc 6.2,binutils 2.28,Anaconda2 python构建MKL加速版的TensorFlow . 显然系统/ lib64 / libstdc .so.6太旧了,所以我试图在另一个目录中使用gcc . 修改PATH,LD_LIBRARY_PATH以预先添加相应的路径(使用模块) . 然而,虽然bazel毫无困难地为gcc,ld,python正确地获取可执行文件,但它仍然试图加载旧的system / lib64 / libstdc .so.6 . 如何强制它使用gcc 6.2中的那个?为什么不从LD_LIBRARY_PATH中取出它?根据谷歌的说法很多人都遇到了麻烦,但我找不到适合我的解决方案 . 我在Ubuntu 16.04下构建TensorFlow没有问题,它在标准位置有足够新的gcc .

我做:

1)./configure我选择的唯一非默认选项是使用MKL并下载MKL

2)bazel build --config = mkl --copt =“ - DEIGEN_USE_VML”-s -c opt // tensorflow / tools / pip_package:build_pip_package

.....

example / example_parser_configuration.proto tensorflow / core / protobuf / control_flow.proto tensorflow / core / protobuf / meta_graph.proto tensorflow / core / protobuf / named_tensor.proto tensorflow / core / protobuf / saved_model.proto tensorflow / core / protobuf / tensorflow_server.proto tensorflow / core / util / event.proto tensorflow / core / util / test_log.proto)错误:/ scratch / midway2 / ivy2 / TF_intel / tensorflow / tensorflow / tools / tfprof / BUILD:42:1:null失败:protoc失败:错误执行命令bazel-out / host / bin / external / protobuf / protoc '--python_out=bazel-out/local-opt/genfiles/' -I . -一世 . -Iexternal / protobuf / python -Iazazel-out / local-opt / genfiles / external / protobuf / python ...(其余5个参数跳过):com.google.devtools.build.lib.shell.BadExitStatusException:Process退出状态1. bazel-out / host / bin / external / protobuf / protoc:/ lib64 / libstdc .so.6:版本 GLIBCXX_3.4.20' not found (required by bazel-out/host/bin/external/protobuf/protoc) bazel-out/host/bin/external/protobuf/protoc: /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: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21'未找到(bazel-out / host / bin / external / protobuf需要) / protoc)

.....

谢谢你,伊戈尔

1 回答

  • 0

    抱歉回复缓慢 . Bazel设计在运行操作时忽略LD_LIBRARY_PATH . 它不必在C工具链检测期间忽略它们,但目前它确实:/为了帮助您转发,我会尝试添加--sysroot = as linkopt或使用bazel grte_top标志 . 根据libstdc .so所在的位置,您可能需要禁用沙箱 . 原则解决方案是编写一个指定builtin_sysroot或grte_top的自定义CROSSTOOL . 但这不是一件容易的事 .

    如果我在那个段落的某处丢失了你,请告诉我:)

相关问题