如何指定Emscripten SDK的Node路径?ODROID单板机emsdk执行错误
解决ODROID Debian Jessie下Emscripten SDK的Node兼容问题
我之前在ARM架构的单板机上也碰到过几乎一模一样的问题,核心原因很明确:你安装的是x86架构的Node版本,但ODROID是ARM架构的设备,系统无法执行x86的二进制文件,所以才会抛出[Errno 8] Exec format error错误。
问题排查确认
先确认你的ODROID架构,运行以下命令:
uname -m
输出应该是armv7l或aarch64这类ARM相关标识,和你安装的node-8.9.1-32bit(x86架构)完全不匹配,这就是问题根源。
具体解决步骤
卸载错误的x86 Node版本
用emsdk自带的卸载命令清理不兼容的版本:emsdk uninstall node-8.9.1-32bit安装适配ARM架构的Node
emsdk默认提供的Node包都是x86架构的,所以需要手动安装ARM版本:- 方法一:用系统包管理器安装(Debian Jessie自带的Node版本可能偏旧,但能满足基础需求):
sudo apt-get update && sudo apt-get install nodejs npm - 方法二:下载对应ARMv7的Node 8.9.1二进制包,解压后放到自定义路径,比如
/home/jackalope/emsdk/node/8.9.1_armv7l/。
- 方法一:用系统包管理器安装(Debian Jessie自带的Node版本可能偏旧,但能满足基础需求):
告知Emscripten SDK Node的位置
有两种可靠的方式指定Node路径:- 方式一:修改Emscripten配置文件
复制默认配置文件到自定义位置:
编辑cp ~/.emscripten ~/.emscripten_arm~/.emscripten_arm,找到NODE_JS字段,修改为你实际的Node二进制路径:
然后设置环境变量让emsdk使用这个配置:NODE_JS = '/usr/bin/node' # 或者你手动解压的路径,比如/home/jackalope/emsdk/node/8.9.1_armv7l/bin/nodeexport EM_CONFIG=~/.emscripten_arm - 方式二:用emsdk config命令设置
直接通过emsdk配置指定Node路径:emsdk config node /path/to/your/arm/node emsdk activate latest source /home/jackalope/emsdk/emsdk_env.sh
- 方式一:修改Emscripten配置文件
验证修复
完成以上步骤后,运行emcc -v,应该不会再出现Node相关的警告或错误了。同时可以用node -v确认当前Node版本和架构匹配。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

