首页 > 解决方案 > M1 Mac 上的 Tensorflow C api 立即出现运行时错误

问题描述

我正在尝试在 xcode 项目中使用 Tensorflow C api。一旦应用程序开始运行,主线程上就会生成 BAD_INSTRUCTION 错误。此错误来自:

tensorflow::monitoring::MetricDef<(tensorflow::monitoring::MetricKind)1, long long, 2>::MetricDef<char [11], char [7]>(absl::lts_2020_02_25::string_view, absl:: lts_2020_02_25::string_view, char const (&) [11], char const (&) [7]) ()

我使用以下方式安装了 api:https ://www.tensorflow.org/install/lang_c

我正在为 x86_64 架构构建(使用 Rosetta 进行翻译),并通过指定运行路径搜索路径到 .dylib 目录来链接库。我还将此路径作为常规搜索路径包含在内,并添加了标题搜索路径。最后,我将两个 .dylib 都添加到了“使用库链接二进制文件”列表中。

我在 M1 macbook pro 上运行 xcode 12.4。如果有人知道任何方法可以从 xcode 中获取有关崩溃的更多信息,那也很有用。

我试过在英特尔 MacBook 上安装,效果很好。

标签: c++ctensorflowtensorflow2.0tensorflow-c++

解决方案


M1 处理器是 ARM。

您为 x86_64(英特尔架构)编译,这意味着它不兼容。

您必须为 ARM 编译它,否则它将无法运行。(这就像尝试在 .NET 中运行 JVM 字节码,它只是行不通)

有关更多信息,请参阅此答案


推荐阅读