问题描述
我知道clang(通过使用target = wasm32)和emscripten都可以将C代码编译为Webassembly,但是它们有何不同?
看起来他们俩都使用LLVM作为后端。实际上,我什至还不太了解llvm和clang之间的关系...
我已经阅读WebAssembly已有一段时间了,但是我对此并不了解。非常感谢您的宝贵时间!
解决方法
clang是基于llvm技术构建的编译器,因此您经常听到clang和llvm互换使用。铛只是llvm项目的一个组成部分。
emscripten是一个编译器,使用clang进行实际的WebAssembly编译工作中的大部分繁重工作,但除此之外还添加了许多功能,主要与与JavaScript和Web的无缝集成以及POSIX和其他标准。
emscripten在内部运行--target=wasm32-unknown-emscripten
并与常规--target=wasm32
有一些很小的区别。
如果您使用-v
运行emscripten,它将在后台显示其使用的完整clang命令行。