当前位置: 首页 > 知识库问答 >
问题:

用bazel用android ndk toolchain构建C++目标的正确方法是什么

闾丘炫明
2023-03-14

我有一个带有tflite模型推断的。cpp代码。此源代码文件是bazel工作区的一部分。我想用默认的桌面编译器和ndk的arm64自定义工具链来构建它,然后在PC和移动上运行它,并比较结果。如何从ndk工具链(someandroidndkpath/toolchains/arm64/bin/clang)中指定自定义编译器?

我在构建文件中有一个简单的目标:

cc_binary(
    name = "Evaluation",
    srcs = ["evaluation.cpp"],
    visibility = ["//visibility:public"],
    deps = [
        "@org_tensorflow//tensorflow/lite:framework",
        "@org_tensorflow//tensorflow/lite/kernels:builtin_ops",
    ],
)

编辑:多亏了@ahumesky,它起作用了。我想说明如何配置android_ndk_repository规则。

_ANDROID_NDK_HOME = "~/Android/Sdk/ndk/20.1.5948944/"
_ANDROID_SDK_HOME = "~/Android/Sdk/"
_ANDROID_NDK_API_VERSION = "29"
_ANDROID_SDK_API_VERSION = "29"
_ANDROID_BUILD_TOOLS_VERSION = "29.0.2"

示例:

load("//third_party/android:android_configure.bzl", "android_configure")
android_configure(name = "local_config_android")
load("@local_config_android//:android.bzl", "android_workspace")
android_workspace()

共有1个答案

燕永昌
2023-03-14

首先,确保在Workspace文件中设置了android_ndk_repository规则(可以手动设置,也可以通过TensorFlow的configure脚本设置),然后尝试以下bazel标志:

--crosstool_top=//external:android/crosstool
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain
--cpu=arm64-v8a

使用Android交叉表,--CPU可以是ARM64-V8AARMeabi-V7Ax86x86_64之一

注意,只有在构建cc_binary时才需要这些标志。如果您正在构建android_binary,那么android_binary依赖项中的cc_library规则将自动使用Android交叉。

 类似资料:
  • 问题内容: 即使在使用Java Swing一年以上之后,对我来说,它仍然像魔术一样。如何正确使用BufferStrategy,尤其是方法? 我想添加一个JFrame和一个Canvas,然后进行绘制。我还希望能够调整()画布的大小。每次我调整Canvas的大小时,似乎都会被浪费掉,或者变得毫无用处,因为在上使用并没有真正做任何事情。另外,它具有怪异的不确定性行为,我不知道如何正确同步它。 这就是我的

  • 问题内容: 我想在Linux上使用该机制。我希望我的应用程序知道何时更改了文件。能否请您提供给我一个示例,该怎么做? 问题答案: 文档(来自具有inotify的Monitor文件系统活动) 在C API 提供了三个系统调用来构建各种文件系统监视器: 在内核中创建子系统的实例,并在成功和失败时返回文件描述符。与其他系统调用一样,如果失败,请检查诊断。 顾名思义,它增加了一块 手表 。每个监视都必须提

  • 问题内容: 需要帮助,以了解如何在UIKit中使用prepareForReuse()。该文件说 您只应重置与内容无关的单元格属性,例如Alpha,编辑和选择状态 但是如何重置单个属性属性(例如isHidden)呢? 假设我的单元格有2个标签,我应该在哪里重置: 标签文本 label.numberOfLines label.isHidden 我的tableView(_:cellForRowAt :)

  • 一段时间以来,我一直试图将我的tableview工作作为一种电子表格,通过背景线程进行更新,当单元格更新时,它会亮起几秒钟(更改样式),然后返回到原始样式。我已经知道,我不能直接在表格单元格中存储和设置样式,我需要某种支持类来保存这些数据。但是tableview“重用”单元格(使用相同的单元格处理不同的数据)的行为真的很奇怪。当所有单元格都适合屏幕时,它对我来说完美无瑕,但一旦我放置大约100个单

  • 对于,使用C 11基于范围的的正确方法是什么? 应该使用什么语法<代码>用于(自动元素:容器),或