Repolode
emscripten-core

emscripten-core/emscripten

将 C 和 C++ 代码编译为 WebAssembly,使其可在浏览器、Node.js 等环境运行的编译工具链。

Star
27,734
Fork
3,572
未关闭 Issue
2,527
最近提交
4小时前

这是什么?

Emscripten 基于 LLVM 和 Binaryen,将 C 和 C++ 编译为 WebAssembly。产物可运行在网页、Node.js 以及独立的 Wasm 运行时中。使用方式与 gcc、clang 类似,执行 emcc 即可生成 WebAssembly 模块及用于加载它的 JavaScript 文件,或一个示例 HTML 页面。

项目提供了 OpenGL、SDL2 等常见可移植 API 的 Web 实现,便于把已有的原生图形应用移植到浏览器中。Unity 游戏引擎和 Google Earth 等大型项目都是通过这类方式移植的。

项目主要围绕通过 Clang 编译 C 和 C++,也可与其他基于 LLVM 的编译器集成,例如 Rust 的 wasm32-unknown-emscripten 目标。

核心功能

  • 01通过 LLVM 和 Binaryen 将 C 和 C++ 编译为 WebAssembly。
  • 02产物可在浏览器、Node.js、Deno、Bun 及独立 Wasm 运行时中运行。
  • 03提供 OpenGL、SDL2 等 API 的 Web 实现。
  • 04使用 emcc 命令,调用方式与 gcc、clang 相近。
  • 05可生成 HTML 页面或纯 JavaScript 加载文件。

适用场景

  • 将现有的 C 或 C++ 桌面应用或游戏移植到网页中运行。
  • 在 Node.js 项目中调用原生 C 或 C++ 库。
  • 将 C 代码编译为 WebAssembly 模块,供其他 Wasm 运行时使用。

快速上手

  1. 1

    从下载页面安装 Emscripten SDK(emsdk)

  2. 2

    将 hello.c 编译为 JavaScript 文件

    emcc hello.c -o hello.js
  3. 3

    用 Node.js 运行生成的 JavaScript 文件

    node hello.js

使用前须知

  • 安装需要从下载页面获取 emsdk 工具链,而不是一条包管理器命令即可完成。

标签

常见问题

emscripten 是什么?
将 C 和 C++ 代码编译为 WebAssembly,使其可在浏览器、Node.js 等环境运行的编译工具链。 Emscripten 基于 LLVM 和 Binaryen,将 C 和 C++ 编译为 WebAssembly。产物可运行在网页、Node.js 以及独立的 Wasm 运行时中。使用方式与 gcc、clang 类似,执行 emcc 即可生成 WebAssembly 模块及用于加载它的 JavaScript 文件,或一个示例 HTML 页面。
emscripten 可以免费使用吗?用的什么许可证?
emscripten 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
emscripten 还在维护吗?
活跃维护中。emscripten 最近一次提交是在 2026年10月21日。
emscripten 适合用来做什么?
将现有的 C 或 C++ 桌面应用或游戏移植到网页中运行。 在 Node.js 项目中调用原生 C 或 C++ 库。 将 C 代码编译为 WebAssembly 模块,供其他 Wasm 运行时使用。
emscripten 怎么安装和运行?
从下载页面安装 Emscripten SDK(emsdk) 将 hello.c 编译为 JavaScript 文件: emcc hello.c -o hello.js 用 Node.js 运行生成的 JavaScript 文件: node hello.js
在哪里获取 emscripten?
源代码和安装说明在 GitHub 上:https://github.com/emscripten-core/emscripten

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目