从源代码构建 Emscripten

自己构建 Emscripten 是使用 emsdk 获取二进制文件的另一种方法。

Emscripten 本身是用 Python 和 JavaScript 编写的,因此不需要编译。但是,签出后,你需要执行一些步骤才能使用它(例如 npm install)。存储库顶层的 bootstrap 脚本负责运行这些步骤,并且 emcc 会在检测到需要运行 bootstrap 时报错。

除了主 emscripten 存储库外,你还需要签出并构建 LLVM 和 Binaryen(如下所述)。编译完这些后,你需要编辑你的 .emscripten 文件,使其指向它们对应的位置。

使用这些存储库中的每个存储库的 main 分支,或者查看 打包 说明,以识别特定版本中使用的精确提交。

构建 LLVM

git 仓库 构建 LLVM。包括 clang 和 wasm-ld(使用类似 -DLLVM_ENABLE_PROJECTS='lld;clang' 的内容)以及 Wasm 后端(默认包含;不要禁用它),按照 该项目的说明 操作。例如,以下内容可以正常工作

mkdir build
cd build/
cmake ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='lld;clang' -DLLVM_TARGETS_TO_BUILD="host;WebAssembly" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF  # -DLLVM_ENABLE_ASSERTIONS=ON
cmake --build .

然后将环境变量 EM_LLVM_ROOT 设置为 <llvm_src>/build/bin(无需安装)。

如果你需要匹配 emsdk 版本的 LLVM,查看 emscripten-release 构建和测试脚本。特别是 src/build.py

有关更多详细信息,请参阅上游文档。

构建 Binaryen

查看 Binaryen 构建说明