在
this tutorial之后,我尝试使用以下命令将C程序编译为WebAssembly.
emcc hello.c -s WASM=1 -o hello.html
但我知道“没有可用的目标与这个三联系兼容”.问题.
$emcc hello.c -s WASM=1 -o hello.html
WARNING root: LLVM version appears incorrect (seeing "(https://github.com/kripken/emscripten-fastcomp-clang/", expected "3.4")
INFO root: (Emscripten: Running sanity checks)
WARNING root: Assigning a non-existent settings attribute "WASM"
WARNING root: - did you mean one of ASM_JS?
WARNING root: - perhaps a typo in emcc's -s X=Y notation?
WARNING root: - (see src/settings.js for valid values)
/home/casper/Desktop/test/emsdk/clang/fastcomp/build_incoming_64/bin/lli: error creating EE: No available targets are compatible with this triple.
FAIL: Running the generated program failed!
怎么解决?
EMCC版本
$emcc --version
emcc (Emscripten GCC-like replacement) 1.22.1 ()
Copyright (C) 2014 the Emscripten authors (see AUTHORS.txt)
This is free and open source software under the MIT license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
基本信息
OS : Ubuntu 16.10
emcc Location: /usr/bin/emcc
最佳答案 在WebAssembly启动之前,您正在运行emcc版本1.22.1,其中
dates back from 8/7/2014.
你所遵循的指令中的emsdk必须安装了一个非常新的emscripten版本(这是这些指令的sdk-incoming-64bit:传入是最新的分支),但在你的系统中找到了一个较旧的emscripten.
跑:
which emcc
echo $PATH
他们说什么?我怀疑你有一个旧的emscripten躺在那里.您可能还想检查和/或删除您的~/.emscripten
file,其中可能还包含过时的信息.
您可以使用其绝对路径更改路径,删除旧的emscripten或调用SDK的emscripten(尽管如果其他脚本沿路径选择旧版本,这可能会失败).
不要忘记(从教程的说明中)激活您安装的SDK:
./emsdk activate --build=Release sdk-incoming-64bit binaryen-master-64bit
并运行:
source ./emsdk_env.sh
需要为每个shell会话运行最后一个命令.如果您打开一个新shell,则需要重新获取SDK.