6

按照本教程,我尝试使用以下命令将 C 程序编译为 WebAssembly。

emcc hello.c -s WASM=1 -o hello.html

但我遇到了“ No available targets are compatible with this triple.”问题。

$ 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


4

1 回答 1

3

您正在运行emcc1.22.1 版本,该版本可以追溯到 8/7/2014,在 WebAssembly 启动之前。

emsdk在您遵循的指令中,您必须安装了一个非常新的 emscripten 版本(这就是sdk-incoming-64bit这些指令所做的:incoming是最新的分支),但是在您的系统中找到了一个较旧的 emscripten。

跑:

which emcc
echo $PATH

他们说什么?我怀疑你有一个旧的emscripten躺在那里。您可能还想检查和/或删除您的~/.emscripten文件,其中可能还包含过时的信息。

您可以更改路径,删除旧的 emscripten,或使用其绝对路径调用 SDK 的 emscripten(尽管如果其他脚本沿路径选择旧版本,这可能会在稍后失败)。

不要忘记(根据教程的说明)激活您已安装的 SDK:

./emsdk activate --build=Release sdk-incoming-64bit binaryen-master-64bit

并运行:

source ./emsdk_env.sh

最后一个命令需要为每个 shell 会话运行。如果您打开一个新的 shell,您需要重新安装sourceSDK。

于 2017-03-10T10:20:16.290 回答