# wasm环境配置 > wasm需要使用Emscripten进行编译,本次使用的系统版本为 `ubuntu21.04` ## 搭建 `Emscriptien` 编译环境 ### 1.安装依赖包 `python3` `cmake` `java` ```shell # 安装python sudo apt-get install python # 安装cmake sudo apt-get install cmake #安装 java sudo apt-get install default-jre ``` ### 2.获取并且安装 `emsdk` , [官网地址](https://emscripten.org/docs/getting_started/downloads.html) ```shell git clone https://github.com/emscripten-core/emsdk.git # 等待安装完成后进入emsdk文件夹 cd emsdk ``` ### 3.开始安装emsdk #### 1. 安装 > 执行官方给的命令进行处理,官方命令处理后是本次执行有环境变量,退出终端后会刷新,原作者给了一个加入到打开终端自动加载的方式 ```shell # 下载安装依赖工具,该步骤会自动下载最新稳定版的nodejs ./emsdk install latest # 激活sdk ./emsdk activate latest # 刷新环境变量 source ./emsdk_env.sh # 如果需要打开终端自动加载环境变量则执行此操作 vim ~/.bashrc # 在文件最后一行加上下面命令,其中 path_to_emsdk 为 emsdk 的路径 source path_to_emsdk/emsdk_env.sh ``` #### 2. 测试 `emsdk` 环境 ##### 1. 创建一个简单的 `test.c` 文件 ```c #include int main(){ printf("hello,WOrld!\n"); return 0; } ``` ##### 2. 编译 `test.c` 文件 该步骤将会生成三个文件 `test.html` , `test.js` , `test.wasm` 测试页面,调用js,二进制库 ```shell emcc test.c -o test.html ``` ##### 3. 测试是否正常使用 > 有两种测试方式,都依赖于 `node` 环境 在安装 `emsdk` 时已经进行安装了,直接用就行 ###### 方案1 通过npm全局安装并启动一个静态服务器,然后在浏览器访问 127.0.0.1:9080 ```shell npm install -g static-server static-server ``` ###### 方案2 使用nodejs直接执行 `test.js` 文件 ```shell node ./test.js ``` 上方安装 `emsdk` 参考于 [https://github.darkgod.online/docs/emscripten/ffmpeg](https://github.darkgod.online/docs/emscripten/ffmpeg) ## 编译ffmpeg 精简编译,只保留 `h264` 解码器 ``` emconfigure ./configure --cc="emcc" --cxx="em++" --ar="emar" --ranlib="emranlib" --prefix=$(pwd)/../ffmpeg-wasm/ffmpeg-lite --enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic \ --enable-gpl --enable-version3 \ --disable-swresample --disable-postproc --disable-logging --disable-everything \ --disable-programs --disable-asm --disable-doc --disable-network --disable-debug \--disable-iconv --disable-sdl2 \ --disable-avdevice \ --disable-avformat \ --disable-avfilter \ --disable-decoders \ --disable-encoders \ --disable-hwaccels \ --disable-demuxers \ --disable-muxers \ --disable-parsers \ --disable-protocols \ --disable-bsfs \ --disable-indevs \ --disable-outdevs \ --disable-filters \ --enable-decoder=h264 \ --enable-parser=h264 ```