代码之家  ›  专栏  ›  技术社区  ›  goe

试图编译TensorFlow时出现“/system/bin/linker:No this file or directory”错误

  •  3
  • goe  · 技术社区  · 6 年前

    我正在尝试编译tensorflow lite以运行Android the building script ,但生成过程因以下错误而停止:

    /system/bin/linker: No such file or directory
    

    我能理解建造过程是如何运作的( compilation + linking )但我不明白为什么需要这个'/system/bin/linker'。此链接器不在SDK或NDK文件夹中,也不在主机的文件夹树中(我正在使用Linux进行构建过程)。

    它看起来像是Android文件结构的一部分,但是构建过程不应该依赖于最终的系统结构。

    我试图构建的元素是“schema_fbs”,它使用flatbufs(第三方依赖项)编译部分代码。我使用的完整句子是:

    bazel build \
    --cxxopt='--std=c++11' \
    --crosstool_top=//external:android/crosstool \
    --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
    --cpu=armeabi-v7a \
    --verbose_failures \
    --subcommands \
    //tensorflow/contrib/lite/schema:schema_fbs
    

    它可能是由Bazel构建脚本中的一个测试用例引起的(我已经对我发现的所有测试进行了注释),但是为什么需要链接器呢?在编译过程中,我需要做些什么来定义这个'system'文件夹吗?

    笔记:

    主机操作系统:Ubuntu 16.04

    完整的错误消息:

    INFO: Analysed target //tensorflow/contrib/lite/schema:schema_fbs_srcs (0 packages loaded).
    INFO: Found 1 target...
    SUBCOMMAND: # //tensorflow/contrib/lite/schema:schema_fbs_srcs [action 'Generating flatbuffer files for schema_fbs_srcs: //tensorflow/contrib/lite/schema:schema_fbs_srcs']
    (cd /home/user/.cache/bazel/_bazel_user/73606864f5ec4cce18dd83a6cbcd2bc2/execroot/org_tensorflow && \
      exec env - \
        LD_LIBRARY_PATH=/usr/local/lib:/home/user/Libraries/llvm-4.0.0.src/build/lib: \
        PATH=/home/user/Software/git-sizer:/home/user/Android/Sdk/platform-tools:/home/user/anaconda3/bin:/home/user/Libraries/llvm-4.0.0.src/build/bin:/home/user/bin:/home/user/repo/caffe/build/install/lib:/home/user/Software/cmake-3.10.3-Linux-x86_64/bin:::::/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin \
      /bin/bash -c 'source external/bazel_tools/tools/genrule/genrule-setup.sh; for f in tensorflow/contrib/lite/schema/schema.fbs; do bazel-out/armeabi-v7a-opt/bin/external/flatbuffers/flatc --no-union-value-namespacing --gen-object-api  -c -o bazel-out/armeabi-v7a-opt/genfiles/tensorflow/contrib/lite/schema $f; done')
    ERROR: /home/user/Repositories/git/tensorflow/tensorflow/contrib/lite/schema/BUILD:57:1: Generating flatbuffer files for schema_fbs_srcs: //tensorflow/contrib/lite/schema:schema_fbs_srcs failed (Exit 255): bash failed: error executing command 
      (cd /home/user/.cache/bazel/_bazel_user/73606864f5ec4cce18dd83a6cbcd2bc2/execroot/org_tensorflow && \
      exec env - \
        LD_LIBRARY_PATH=/usr/local/lib:/home/user/Libraries/llvm-4.0.0.src/build/lib: \
        PATH=/home/user/Software/git-sizer:/home/user/Android/Sdk/platform-tools:/home/user/anaconda3/bin:/home/user/Libraries/llvm-4.0.0.src/build/bin:/home/user/bin:/home/user/repo/caffe/build/install/lib:/home/user/Software/cmake-3.10.3-Linux-x86_64/bin:::::/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin \
      /bin/bash -c 'source external/bazel_tools/tools/genrule/genrule-setup.sh; for f in tensorflow/contrib/lite/schema/schema.fbs; do bazel-out/armeabi-v7a-opt/bin/external/flatbuffers/flatc --no-union-value-namespacing --gen-object-api  -c -o bazel-out/armeabi-v7a-opt/genfiles/tensorflow/contrib/lite/schema $f; done')
    /system/bin/linker: No such file or directory
    Target //tensorflow/contrib/lite/schema:schema_fbs_srcs failed to build
    INFO: Elapsed time: 0.572s, Critical Path: 0.02s
    INFO: 0 processes.
    FAILED: Build did NOT complete successfully
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Andre Hentz    6 年前

    TensorFlow Lite AAR也可以使用以下方式构建:

    bazel build --cxxopt='--std=c++11' -c opt --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a tensorflow/contrib/lite/java:tensorflow-lite
    

    您必须确保您运行了./configure,并让它为您配置SDK和NDK。