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

问题描述

我知道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命令行。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...