我尝试在Ubuntu 16.04上构建AARCH64。我遵循了本指南(本机编译)https://tensorflow.google.cn/lite/guide/build_arm64。
但是我得到了这个错误。 有什么问题? 我也想在Orange Pi 3上尝试一下示例。 在为arm64构建后如何使用libtensorflow-lite.a文件。我知道Qt ide和c&c ++。 谢谢。
db.collection.update({_id:1},
{
$set: {
'someArray.$[elem].c': 3
}
},
{ arrayFilters: [{ "elem.a": 1 }], multi: true, "upsert": true }
)
答案 0 :(得分:2)
尝试解决了几个小时的问题后,我想我找到了解决方案:
只需在tensorflow / lite / tools / make / Makefile文件的CXXFLAGS变量中添加“ -flax-vector-conversions”参数即可。
对我来说,它位于第58行:
CXXFLAGS := -O3 -DNDEBUG -fPIC -flax-vector-conversions
以前的错误消失了,但是现在我又遇到了另一个错误:
undefined reference to `shm_open'
之后,我在tensorflow / lite / tools / make / targets / aarch64_makefile.inc中添加了“ -lrt”
LIBS := \
-lstdc++ \
-lpthread \
-lm \
-ldl \
-lrt
并将Makefile中的 BUILD_WITH_NNAPI 更改为 false
编译过程成功了。 我将尽快测试TF库。
答案 1 :(得分:1)
在aarch64上构建Tensorflow-1.14时,我也遇到了类似的问题。我使用了此PR中建议的更改,它已解决了此问题。
解决linux_aarch64系统上的以下两个问题:
在def tflite_copts()
的{{1}}中添加以下大小写
tensorflow/lite/build_def.bzl
答案 2 :(得分:0)
要为arm64构建Tensorflow Lite,我进行了修改:
tensorflow / lite / tools / make / targets / aarch64_makefile.inc
同时添加到CXXFLAGS和CFLAGS:
-flax-vector-conversions \
-fomit-frame-pointer \
给出:
CXXFLAGS += \
-march=armv8-a \
-funsafe-math-optimizations \
-ftree-vectorize \
-flax-vector-conversions \
-fomit-frame-pointer \
-fPIC
CFLAGS += \
-march=armv8-a \
-funsafe-math-optimizations \
-ftree-vectorize \
-flax-vector-conversions \
-fomit-frame-pointer \
-fPIC
对我来说,它摆脱了error: cannot convert
和error: x29 cannot be used in asm here
的困扰。
然后我就可以构建libtensorflow-lite.a
。
构建示例应用程序时,教程中的命令仍然给我一个错误:undefined reference to flatbuffers::ClassicLocale::instance_
,有关此问题的解决方案,请参见
https://github.com/tensorflow/tensorflow/issues/28863
作为旁注,如果您尝试使用指南中的docker容器:
https://tensorflow.google.cn/lite/guide/build_arm64
建议使用tensorflow/tensorflow:nightly-devel
,根据docker hub,该图像当前是6个月大的映像(肯定不是每晚):
https://hub.docker.com/r/tensorflow/tensorflow/tags/?page=1
在同一链接中,您可以找到一个更新的devel
容器,在我的情况下,我使用的是devel-py3