Linux(ubuntu 20)下將Skia編譯為Webassembly(Wasm)


第一步 安裝依賴以及源碼下載:

emsdk:

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

depot_tools:

git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'

將depot_tools目錄添加到環境變量 : export PATH="${PWD}/depot_tools:${PATH}"

Tip : 使用命令“ninja --version”檢查ninja是否可用,ninja位於depot_tools目錄

python2:

sudo apt install python2

由於skia編譯過程中使用的是python2,請確保python2的使用優先級高於python3

使用以下命令設置:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 

其它依賴:

sudo apt-get install cmake

sudo apt-get install default-jre

sudo apt install llvm 

sudo apt install clang 

 

第二步 配置:

由於skia與emsdk的源碼經常變動,使用最新的skia、emsdk進行編譯失敗的概率很大

可以在skia在github上的提交日志中找到這skia提交對應的emsdk的版本https://github.com/google/skia/commits?author=kjlubick

比如:

 

可以使用skia的 2e24270的提交與emsdk 2.0.20進行編譯

skia配置

cd切換到skia代碼目錄,使用命令 : git reset 2e24270

emsdk配置

cd切換到emsdk的代碼目錄

使用命令:

./emsdk install 2.0.20

./emsdk activate 2.0.20

設置環境變量(臨時)

source ./emsd_env.sh

注意:source ./emsd_env.sh設置的環境變量僅當前控制台可用,下次再啟動emsdk需要再次執行該條命令。這樣子做的目的是不污染系統的環境。

查看emsdk是否生效:

emcc --version

若是切換過emsdk的版本,需要清空編譯緩存:

emcc --clear-cache

第三步  編譯:

cd切換到skia目錄

同步依賴:

python2 tools/git-sync-deps

生成構建文件:

bin/gn gen out/Static --args='is_official_build=true'

bin/gn gen out/Shared --args='is_official_build=true is_component_build=true'

這里參數代表的意義在skia官網(英語)有更詳細的說明:https://skia.org/docs/user/build/

開始編譯:

cd modules/canvaskit

./compile.sh  no_skottie no_particles no_font

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM