4

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

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

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

4

1 回答 1

9

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

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

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

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

于 2020-11-05T05:59:13.107 回答