shared:ERROR: BINARYEN_ROOT 在 /root/.emscripten 中设置为空值
Posted
技术标签:
【中文标题】shared:ERROR: BINARYEN_ROOT 在 /root/.emscripten 中设置为空值【英文标题】:shared:ERROR: BINARYEN_ROOT is set to empty value in /root/.emscripten 【发布时间】:2020-06-27 15:21:07 【问题描述】:我正在尝试使用以下命令运行 docker 映像:
docker run -v $PWD/build:/app/build --rm tflite-find-arena-size
但是这个错误弹出给我。我正在使用 MacOS。我试过 brew install 但这没有帮助。我还打开了 ~/.emscripten 文件并检查了 BINARYEN_ROOT 是否为空。请帮忙。
shared:ERROR: BINARYEN_ROOT is set to empty value in /root/.emscripten
Makefile.emcc:31: recipe for target 'build' failed
make: *** [build] Error 1
这是我正在使用的生成文件:
NAME = find-arena-size
CC = emcc
CXX = em++
CFLAGS ?= -Wall
MACROS += -DTF_LITE_DISABLE_X86_NEON
CXXFLAGS += -std=c++11
EMCCFLAGS += -s WASM=0
EMCCFLAGS += --bind
CFLAGS += -I.
CFLAGS += -Isource
CFLAGS += -Iedge-impulse-sdk/
CFLAGS += -Iedge-impulse-sdk/tensorflow
CFLAGS += -Iedge-impulse-sdk/third_party
CFLAGS += -Iedge-impulse-sdk/third_party/flatbuffers
CFLAGS += -Iedge-impulse-sdk/third_party/flatbuffers/include
CFLAGS += -Iedge-impulse-sdk/third_party/flatbuffers/include/flatbuffers
CFLAGS += -Iedge-impulse-sdk/third_party/gemmlowp/
CFLAGS += -Iedge-impulse-sdk/third_party/gemmlowp/fixedpoint
CFLAGS += -Iedge-impulse-sdk/third_party/gemmlowp/internal
CFLAGS += -Iedge-impulse-sdk/third_party/ruy
CFLAGS += -Imodel-parameters
CFLAGS += -Iedge-impulse-sdk/porting
all: build
.PHONY: build clean
build:
echo "Mazenm"
mkdir -p build/emcc
$(CC) -c $(MACROS) $(CFLAGS) $(LFLAGS) edge-impulse-sdk/tensorflow/lite/c/common.c -o build/emcc/common.o
$(CXX) $(MACROS) $(CXXFLAGS) $(CFLAGS) $(LFLAGS) $(EMCCFLAGS) emcc/emcc_binding.cpp edge-impulse-sdk/tensorflow/lite/kernels/*.cc edge-impulse-sdk/tensorflow/lite/kernels/internal/*.cc edge-impulse-sdk/tensorflow/lite/micro/kernels/*.cc edge-impulse-sdk/tensorflow/lite/micro/*.cc edge-impulse-sdk/tensorflow/lite/micro/memory_planner/*.cc edge-impulse-sdk/tensorflow/lite/core/api/*.cc ./edge-impulse-sdk/dsp/memory.cpp emcc/porting/*.c* build/emcc/common.o -o build/emcc/$(NAME).js
rm build/emcc/*.o
clean:
rm -r build/emcc
【问题讨论】:
【参考方案1】:您使用的是哪个 docker 镜像?你是如何在 docker 镜像中安装 emscripten(emsdk?)的。
您可以通过docker pull emscripten/emsdk
使用一个半官方的 docker 镜像。
但是,您应该能够直接在 MacOS 上安装 emsdk,而根本不需要使用 docker。这是安装 emscripten 的推荐方式。如果您在直接安装 emsdk 时遇到问题,请在https://github.com/emscripten-core/emsdk 提交错误
【讨论】:
我在这个 repo 中使用 docker 镜像(在 web 程序集部分)github.com/edgeimpulse/tflite-find-arena-size,当我运行它时会出现错误。 啊,你需要在shell中运行emsdk_env.sh
,而不仅仅是添加到PATH中。所以不是RUN echo "PATH=$PATH:/app/emsdk:/app/emsdk/node/12.9.1_64bit/bin:/app/emsdk/upstream/emscripten" > ~/.bashrc
,你应该运行类似RUN source app/emsdk/emsdk_env.sh > ~/.bashrc
当我运行source emsdk/emsdk_env.sh > ~/.bashrc
然后运行docker run -v $PWD/build:/app/build --rm tflite-find-arena-size
我得到同样的错误是shared:ERROR: BINARYEN_ROOT is set to empty value in /root/.emscripten
以上是关于shared:ERROR: BINARYEN_ROOT 在 /root/.emscripten 中设置为空值的主要内容,如果未能解决你的问题,请参考以下文章