hikerpig / hikerpig.github.io

1 stars 0 forks source link

编译 Skia canvaskit.wasm #11

Open hikerpig opened 5 years ago

hikerpig commented 5 years ago

http://hikerpig.github.io/2019/09/24/2019-09-24-Compile-Skia-Canvaskit-WASM/

Skia 是 Google 一个开源的跨平台图形库,用于 Android, Chromium, Flutter 等项目。目前项目内有在开发的一个 Skia + WebAssembly 版的 CanvasKit, 可以使用 JS 调用预先编译好的 c++ -> wasm 模块,为一些跨平台的图形

yzg-github commented 4 years ago

@hikerpig this is my log to complie skia with emsdk 1.39.20. the version of python is 2.7.16 .i complied on macos catalina 10.15.5 the cmd i used was : ./modules/canvaskit/compile.sh -s ERROR_ON_UNDEFINED_SYMBOLS=0 -Wfastcomp -Werror . ./modules/canvaskit/compile.sh is the file in skia/modules/canvaskit , git commit id of skia is c97ebe06dc1d79fa7dfbf49259d918326b1a460f. complied log: Generating final wasm

/usr/emsdk/upstream/emscripten/em++ -Oz --closure 1 --llvm-lto 1 -DSK_RELEASE --pre-js /usr/skia/modules/canvaskit/release.js -DGR_GL_CHECK_ALLOC_WITH_GET_ERROR=0 -DSK_DISABLE_TRACING -I. -Ithird_party/icu -Ithird_party/skcms -Ithird_party/externals/icu/source/common/ -DSK_DISABLE_AAA -DSK_FORCE_8_BYTE_ALIGNMENT -lEGL -lGLESv2 -DSK_SUPPORT_GPU=1 -DSK_GL -DSK_DISABLE_LEGACY_SHADERCONTEXT --pre-js /usr/skia/modules/canvaskit/cpu.js --pre-js /usr/skia/modules/canvaskit/gpu.js -s USE_WEBGL2=1 -DSK_INCLUDE_PATHOPS -DSK_INCLUDE_RUNTIME_EFFECT -DSK_SERIALIZE_SKP -std=c++17 --bind --no-entry --pre-js /usr/skia/modules/canvaskit/preamble.js --pre-js /usr/skia/modules/canvaskit/helper.js --pre-js /usr/skia/modules/canvaskit/interface.js --pre-js /usr/skia/modules/canvaskit/paragraph.js --pre-js /usr/skia/modules/canvaskit/skottie.js --pre-js /usr/skia/modules/canvaskit/particles.js --pre-js /usr/skia/modules/canvaskit/pathops.js --pre-js /usr/skia/modules/canvaskit/font.js --pre-js /usr/skia/modules/canvaskit/skp.js --pre-js /usr/skia/modules/canvaskit/rt_shader.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/preamble.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/util.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/color.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/font.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/canvas2dcontext.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/htmlcanvas.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/imagedata.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/lineargradient.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/path2d.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/pattern.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/radialgradient.js --pre-js /usr/skia/modules/canvaskit/htmlcanvas/postamble.js --pre-js /usr/skia/modules/canvaskit/postamble.js /usr/skia/modules/canvaskit/canvaskit_bindings.cpp /usr/skia/modules/canvaskit/particles_bindings.cpp modules/skresources/src/SkResources.cpp /usr/skia/modules/canvaskit/skottie_bindings.cpp -DSK_INCLUDE_MANAGED_SKOTTIE=1 modules/skottie/utils/SkottieUtils.cpp -DSK_INCLUDE_PARAGRAPH=1 /usr/skia/modules/canvaskit/paragraph_bindings.cpp out/canvaskit_wasm/libskottie.a out/canvaskit_wasm/libsksg.a out/canvaskit_wasm/libparticles.a out/canvaskit_wasm/libskparagraph.a out/canvaskit_wasm/libskshaper.a out/canvaskit_wasm/libharfbuzz.a out/canvaskit_wasm/libicu.a out/canvaskit_wasm/libskia.a /usr/skia/modules/canvaskit/fonts/NotoMono-Regular.ttf.cpp -s ALLOW_MEMORY_GROWTH=1 -s EXPORT_NAME=CanvasKitInit -s FORCE_FILESYSTEM=0 -s FILESYSTEM=0 -s MODULARIZE=1 -s NO_EXIT_RUNTIME=1 -s STRICT=1 -s INITIAL_MEMORY=128MB -s WARN_UNALIGNED=1 -s WASM=1 -o out/canvaskit_wasm/canvaskit.js emcc:WARNING: --llvm-lto ignored when using llvm backend error: undefined symbol: emscripten_webgl_get_current_context (referenced by top-level compiled C/C++ code) warning: Link with -s LLD_REPORT_UNDEFINED to get more information on undefined symbols warning: To disable errors for undefined symbols use -s ERROR_ON_UNDEFINED_SYMBOLS=0 warning: _emscripten_webgl_get_current_context may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library error: undefined symbol: emscripten_webgl_make_context_current (referenced by top-level compiled C/C++ code) warning: _emscripten_webgl_make_context_current may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library Error: Aborting compilation due to previous errors em++: error: '/usr/emsdk/node/12.18.1_64bit/bin/node /usr/emsdk/upstream/emscripten/src/compiler.js /var/folders/q4/vwqr2c557nv8wnb6247v9w540000gn/T/tmprlk1jw81.txt' failed (1) what should i do to solve these errors? is there any setting i missed? Can you give me some suggestions? thanks a lot!

hikerpig commented 4 years ago

@yzg-github I'm glad that you solved your problem in the emsdk repo