假设我有一个简单的、独立的 C++ 文件( math.cpp
),如下所示:
int add(int x, int y) {
return x + y;
}
我如何将它编译为 WebAssembly ( math.wasm
)?
注意:我使用的是 Clang 工具链。
原文由 sdgfsdh 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我有一个简单的、独立的 C++ 文件( math.cpp
),如下所示:
int add(int x, int y) {
return x + y;
}
我如何将它编译为 WebAssembly ( math.wasm
)?
注意:我使用的是 Clang 工具链。
原文由 sdgfsdh 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答1.1k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
4 回答792 阅读
1 回答869 阅读
1 回答899 阅读
1 回答668 阅读
1 回答776 阅读
我发现 这个要点 很有帮助。
基本上,这些是步骤:
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly
构建 llvm 和 clang 5.0.0 或更高版本)clang -emit-llvm --target=wasm32 -Oz math.cpp -c -o math.bc
llc -asm-verbose=false -o math.s math.bc
s2wasm math.s > math.wast
wast2wasm -o math.wasm math.wast
有些步骤感觉多余,但我还没有找到允许快捷方式的工具。 (如果 llc 可以直接编译为 .wasm,或者如果 s2wasm 顾名思义实际上创建了二进制 .wasm 文件,那就太好了。)无论如何,一旦你运行了工具链,它就相对轻松了。但是请注意,目前还没有用于 Web 汇编的 C 或 C++ 标准库。
或者,如果您需要 .wasm 文件只是为了尝试一些东西,您可以摆脱所有工具链的麻烦。浏览到 https://mbebenita.github.io/WasmExplorer/ , 粘贴您的 C/C++ 代码,然后下载编译后的 .wasm 文件。
谢谢@noontz 和@LB– 指出这一点