我知道 clang(通过使用 target=wasm32)和 emscripten 都可以将 C 代码编译成 webassembly,但是它们有什么不同呢?
看起来他们都使用 LLVM 作为后端。其实,我什至不太了解llvm和clang之间的关系......
我已经阅读 WebAssembly 有一段时间了,但我对它缺乏底层的理解。非常感谢您的参与!!
我知道 clang(通过使用 target=wasm32)和 emscripten 都可以将 C 代码编译成 webassembly,但是它们有什么不同呢?
看起来他们都使用 LLVM 作为后端。其实,我什至不太了解llvm和clang之间的关系......
我已经阅读 WebAssembly 有一段时间了,但我对它缺乏底层的理解。非常感谢您的参与!!
clang 是一个基于 llvm 技术的编译器,所以你经常听到 clang 和 llvm 可以互换使用。clang 只是 llvm 项目的一个组件。
emscripten 是一个编译器,它使用 clang 完成实际编译到 WebAssembly 的大部分繁重工作,但在此之上还添加了许多特性和功能,主要与与 JavaScript 和 Web 的无缝集成以及 POSIX 和其他标准的模拟有关。
emscripten 在内部运行 clang,--target=wasm32-unknown-emscripten
与常规的--target=wasm32
.
如果您使用它运行 emscripten,-v
它将在后台打印完整的 clang 命令行。