emscripten-core/emscripten
GitHub: emscripten-core/emscripten
Emscripten 是一个基于 LLVM 和 Binaryen 的编译器工具链,可将 C/C++ 程序编译为 WebAssembly,使原生应用能够在 Web 和 Node.js 等环境中运行。
Stars: 27430 | Forks: 3526

主项目页面:
GitHub CI 状态:[](https://circleci.com/gh/emscripten-core/emscripten/tree/main)
Chromium builder 状态:[emscripten-releases](https://ci.chromium.org/p/emscripten-releases)
## 概述
Emscripten 使用
[LLVM](https://en.wikipedia.org/wiki/LLVM) 和
[Binaryen](https://github.com/WebAssembly/binaryen/) 将 C 和 C++ 编译为 [WebAssembly](https://webassembly.org/)。Emscripten 的输出可以运行
在 Web、Node.js 以及
[wasm runtime](https://v8.dev/blog/emscripten-standalone-wasm#running-in-wasm-runtimes) 中。
Emscripten 为 OpenGL 和
SDL2 等流行的可移植 API 提供了 Web 支持,允许移植复杂的图形化原生应用程序,例如
[Unity 游戏引擎](https://docs.unity3d.com/Manual/webgl-gettingstarted.html)
和 [Google Earth](https://blog.chromium.org/2019/06/webassembly-brings-google-earth-to-more.html)。
它可能也能移植你的代码库!
虽然 Emscripten 主要侧重于使用
[Clang](https://clang.llvm.org/) 编译 C 和 C++,但它可以与其他使用 LLVM 的
编译器集成(例如,Rust 通过 `wasm32-unknown-emscripten` 目标与 Emscripten 集成)。
## 许可证
Emscripten 提供 2 种许可证:MIT 许可证和
伊利诺伊大学/NCSA 开源许可证。
两者都是宽松的开源许可证,它们之间几乎没有
实际区别。
提供这两种许可证的原因是:(1)MIT 许可证
广为人知,非常适合编译器工具链;而
(2)LLVM 的原始许可证,即伊利诺伊大学/NCSA 开源
许可证,同时也被提供,以允许 Emscripten 的代码被集成
到 LLVM 上游。在 Emscripten 转向 LLVM wasm backend 之后,第二个原因变得不再那么重要,此时
我们预计不再有任何代码需要在项目之间来回迁移;
同时,LLVM 也在此期间重新许可为 Apache 2.0 + exceptions。实际上,你
可以直接将 Emscripten 视为 MIT 许可(这允许
你对编译器做几乎任何你想做的事情,包括
商业和非商业用途)。
请参阅 `LICENSE` 获取许可证的完整内容。
标签:AI工具, C/C++, LLVM, SOC Prime, WebAssembly, 事务性I/O, 开发工具, 编译工具链, 逆向工具