环境配置.md 3.0 KB

wasm环境配置

wasm需要使用Emscripten进行编译,本次使用的系统版本为 ubuntu21.04

搭建 Emscriptien 编译环境

1.安装依赖包 python3 cmake java

# 安装python
sudo apt-get install python

# 安装cmake
sudo apt-get install cmake

#安装 java
sudo apt-get install default-jre

2.获取并且安装 emsdk , 官网地址

git clone https://github.com/emscripten-core/emsdk.git

# 等待安装完成后进入emsdk文件夹
cd emsdk

3.开始安装emsdk

1. 安装

执行官方给的命令进行处理,官方命令处理后是本次执行有环境变量,退出终端后会刷新,原作者给了一个加入到打开终端自动加载的方式

    # 下载安装依赖工具,该步骤会自动下载最新稳定版的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 文件
#include <stdio.h>

int main(){
    printf("hello,WOrld!\n");
    return 0;
}
2. 编译 test.c 文件

该步骤将会生成三个文件 test.html , test.js , test.wasm 测试页面,调用js,二进制库

emcc test.c -o test.html
3. 测试是否正常使用

有两种测试方式,都依赖于 node 环境 在安装 emsdk 时已经进行安装了,直接用就行

方案1

通过npm全局安装并启动一个静态服务器,然后在浏览器访问 127.0.0.1:9080

npm install -g static-server

static-server
方案2

使用nodejs直接执行 test.js 文件

node ./test.js

上方安装 emsdk 参考于 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