admin 管理员组

文章数量: 887021

背景

最近研究AV1编码标准的aom编码器,编译的过程中发现需要依赖EMSDK,看解释EMSDK就是Emscripten 的相应SDK,所以此博客记录下EMSDK的安装过程;因为之前完全没接触过Emscripten 。

Emscripten

Emscripten 是一个用于将 C 和 C++ 代码编译成 WebAssembly (Wasm) 和 asm.js 的工具链。它基于 LLVM 编译器基础设施构建,允许开发者在网页中以接近原生的速度运行 C 和 C++ 程序,而无需任何插件。

以下是关于 Emscripten 的一些关键点:

  • 编译目标:Emscripten 可以将 C/C++ 代码编译为 WebAssembly 字节码,这是一种高效的、在 Web 浏览器中运行的低级虚拟机代码。

  • 安装与配置:安装 Emscripten 需要先安装一些前置条件,如 Git、CMake、系统编译工具和 Python。然后通过 emsdk(Emscripten SDK)来安装和管理 Emscripten。

  • 编译过程:Emscripten 使用 emcc(Emscripten Compiler Frontend)作为命令行工具来编译代码。它支持多种编译优化选项,如 -O1 和 -O2,用于生成不同程度的优化代码。

  • 文件系统模拟:由于浏览器的沙盒环境限制,Emscripten 模拟了一个文件系统,允许 C/C++ 代码中使用标准的文件操作 API。

  • HTML 生成:Emscripten 不仅可以生成 JavaScript 文件,还可以生成 HTML 文件,使得编译后的代码能够直接在浏览器中运行。

  • 测试集:Emscripten 提供了丰富的测试用例,覆盖了其大部分功能,对开发者来说是很好的学习资源。

  • 用途:Emscripten 特别适用于希望在 Web 浏览器中运行 3D 游戏和其他高性能应用的场景。

  • 入门教程:对于初学者,有一系列教程可以帮助快速入门 Emscripten,包括如何编译简单的 “Hello, World” 程序,以及如何使用 Emscripten 的各种特性和优化。

Emscripten 的使用对于希望将 C/C++ 应用带入 Web 平台的开发者来说是一个强大的工具,它通过 WebAssembly 使得在浏览器中运行接近原生性能的应用程序成为可能。

  1. 官网:https://emscripten/

Emscripten 的安装过程

  1. 源码下载:git clone https://github/emscripten-core/emsdk
  2. cd到源码目录:cd emsdk
D:\_codec\emsdk [main ≡]> ls


    目录: D:\_codec\emsdk


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2024/5/12      9:21                .circleci
d-----         2024/5/12      9:21                .github
d-----         2024/5/12      9:21                bazel
d-----         2024/5/12      9:21                docker
d-----         2024/5/12      9:25                downloads
d-----         2024/5/12      9:24                java
d-----         2024/5/12      9:24                node
d-----         2024/5/12      9:24                python
d-----         2024/5/12      9:21                scripts
d-----         2024/5/12      9:21                test
d-----         2024/5/12      9:25                upstream
-a----         2024/5/12      9:21            453 .dockerignore
-a----         2024/5/12      9:25            398 .emscripten
-a----         2024/5/12      9:21            513 .flake8
-a----         2024/5/12      9:21            510 .gitignore
-a----         2024/5/12      9:21             26 emcmdprompt.bat
-a----         2024/5/12      9:21          13068 emscripten-releases-tags.json
-a----         2024/5/12      9:21           1688 emsdk
-a----         2024/5/12      9:21           1564 emsdk.bat
-a----         2024/5/12      9:21           1436 emsdk.ps1
-a----         2024/5/12      9:21         120426 emsdk.py
-a----         2024/5/12      9:21             34 emsdk_env.bat
-a----         2024/5/12      9:21            596 emsdk_env.csh
-a----         2024/5/12      9:21            316 emsdk_env.fish
-a----         2024/5/12      9:21            100 emsdk_env.ps1
-a----         2024/5/12      9:21           2050 emsdk_env.sh
-a----         2024/5/12      9:21          25072 emsdk_manifest.json
-a----         2024/5/12      9:21            744 legacy-binaryen-tags.txt
-a----         2024/5/12      9:21           1348 legacy-emscripten-tags.txt
-a----         2024/5/12      9:21           1353 LICENSE
-a----         2024/5/12      9:21           2455 llvm-tags-64bit.txt
-a----         2024/5/12      9:21          11733 README.md
-a----         2024/5/12      9:21            734 SECURITY.md
  1. 顺序输入如下命令,进行激活、设置到环境变量中。
.\emsdk update #更新
git pull
.\emsdk install --global latest # 安装
.\emsdk activate latest # 激活
.\emsdk_env.bat # 设置到环境变量中

  1. 验证,终端输入如下命令:emcc -v,出现如下信息,表示安装成功
D:\_codec\emsdk [main ≡]> emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.59 (0e4c5994eb5b8defd38367a416d0703fd506ad81)
clang version 19.0.0git (https:/github/llvm/llvm-project df762a1643bb5b0b3c907611d118c82d4b68a39d)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: D:\_codec\emsdk\upstream\bin

本文标签: 过程 详细 Windows Emscripten