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 中设置为空值的主要内容,如果未能解决你的问题,请参考以下文章

MVC4 自定义错误页面

错误页定义方法

ASP.NET MVC中的错误处理

如何使自定义错误页面在 ASP.NET MVC 4 中工作