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

问题描述 投票:0回答:1

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

看起来他们都使用LLVM作为后端。其实我也不太明白LLVM和Clang的关系...

我阅读 WebAssembly 一段时间了,但对它缺乏底层理解。

clang llvm webassembly emscripten wasi
1个回答
13
投票

clang 是一个基于 llvm 技术构建的编译器,因此您经常听到 clang 和 llvm 互换使用。 clang 只是 llvm 项目的一个组件。

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

emscripten 在内部与

--target=wasm32-unknown-emscripten
一起运行 clang,这与常规
--target=wasm32
有一些非常小的差异。

如果您使用

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

© www.soinside.com 2019 - 2024. All rights reserved.