Emscripten 和 Clang 在 WebAssembly 编译方面有什么区别

yee*_*haw 2 llvm clang emscripten webassembly wasi

我知道 clang(通过使用 target=wasm32)和 emscripten 都可以将 C 代码编译成 webassembly,但它们有什么不同?

看起来他们都使用 LLVM 作为后端。其实,我什至不太明白 llvm 和 clang 之间的关系......

我已经阅读了一段时间的 WebAssembly,但我对它缺乏低级理解。非常感谢您的参与!!

sbc*_*100 6

clang 是一个基于 llvm 技术的编译器,所以你经常听到 clang 和 llvm 互换使用。clang 只是 llvm 项目的一个组成部分。

emscripten 是一个编译器,它使用 clang 来完成实际编译为 WebAssembly 的大部分繁重工作,但在此基础上还添加了许多特性和功能,主要与与 JavaScript 和 Web 的无缝集成以及 POSIX 和其他标准的模拟有关。

emscripten 在内部运行 clang --target=wasm32-unknown-emscripten,与常规--target=wasm32.

如果你用-v它运行 emscripten,它将打印完整的 clang 命令行,它在后台使用。