Skip to content

Latest commit

 

History

History
49 lines (46 loc) · 4.25 KB

UbuntuKylin下编译skia.md

File metadata and controls

49 lines (46 loc) · 4.25 KB

UbuntuKylin下编译Skia源码的方法

  • 修改日期:2024-10-17
  • 操作系统:UbuntuKylin-24.10-desktop 64位版本(桌面环境:X11)
  • 编译器可选择:LLVM
  • 操作过程中,源码根目录是/home/develop/目录,如果使用其他目录,可替换为实际的目录
  • 说明1:该编译Skia源码的方法,是为了适配nim_duilib 项目使用Skia库,如果用于其他库使用,可能需要修改编译参数
  • 说明2:最新的编译方法中,不再使用Skia中依赖的第三方库,所以不再需要运行python3 tools/git-sync-deps来获取第三方库的源码

一、准备工作

  1. 安装完成系统后,可用升级系统到最新:
    (1)升级系统:sudo apt update
    (2)升级系统:sudo apt upgrade
  2. 安装gcc/g++: 系统中用sudo apt install gcc g++安装,安装后的版本号为:14.2.0;
  3. gdb环境确认:系统自带,GNU gdb 15.1;
  4. 安装make: 系统中用sudo apt install make安装,安装后的版本号为:4.3.4;
  5. python环境确认:系统自带的版本是3.12.7,可以满足需要;
  6. 安装cmake: 系统中用sudo apt install cmake安装,安装后的版本号为:3.30.3;
  7. 安装git:系统中用sudo apt install git安装,安装后的版本号为:2.45.2;
  8. 安装ninja:系统中用sudo apt install ninja-build安装,安装后的版本号为:1.12.1;
  9. 安装gn:系统中用sudo apt install generate-ninja安装,安装后的版本号为:0.0~git20240328.93ee9b9-1
  10. 安装LLVM编译环境:
    (1)系统中用sudo apt install llvm安装,安装后的版本号为:19.1.1;
    (2)系统中用sudo apt install clang安装,安装后的版本号为:19.1.1;
  11. 安装libfontconfig:系统中用sudo apt install libfontconfig-dev,安装后的版本号为:2.15.0
  12. 安装OpenGL:sudo apt install libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev

二、获取skia源码及相关依赖

  1. > cd /home/develop
  2. > git clone https://github.com/google/skia.git
  3. > git checkout 39bd1d3f242aa241c42cfb6a9de91508017eda03
  4. 备注:skia源码更新的日期:Date: 2024/10/11 15:03:09
  5. 更新修改代码:
  • 下载需要更新的代码到本地:git clone https://github.com/rhett-lee/skia_compile
  • 更新文件:解压Skia.2024-10-13.src.zip,将解压后的文件,覆盖/home/develop/skia/目录中的所有同名文件。
  • 注意事项:该修改的代码的SHA-1值,需要比对,如果不是这个版本的代码,直接覆盖可能有问题,需要手工修改;
  • 修改代码解决的问题:修改部分其他源码:修复运行时的几个小问题。

三、编译skia(编译器:LLVM)

  1. 进入skia源码目录:
    > cd /home/develop/skia
  2. 编译skia静态库(LLVM.x64.Release)
  • gn gen out/LLVM.x64.Release --args="target_cpu=\"x64\" cc=\"clang\" cxx=\"clang++\" clang_win_version=\"17\" is_trivial_abi=false is_official_build=true skia_use_libwebp_encode=false skia_use_libwebp_decode=false skia_use_libpng_encode=false skia_use_libpng_decode=false skia_use_zlib=false skia_use_libjpeg_turbo_encode=false skia_use_libjpeg_turbo_decode=false skia_enable_fontmgr_win_gdi=false skia_use_icu=false skia_use_expat=false skia_use_xps=false skia_enable_pdf=false skia_use_wuffs=false is_debug=false extra_cflags=[\"-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\"]"
  • ninja -C out/LLVM.x64.Release

四、编译skia(编译器:gcc/g++,如果不使用LLVM编译器,也可选择用gcc/g++编译)

  1. 进入skia源码目录:
    > cd /home/develop/skia
  2. 编译skia静态库(LLVM.x64.Release)
  • gn gen out/LLVM.x64.Release --args="target_cpu=\"x64\" cc=\"gcc\" cxx=\"g++\" is_trivial_abi=false is_official_build=true skia_use_libwebp_encode=false skia_use_libwebp_decode=false skia_use_libpng_encode=false skia_use_libpng_decode=false skia_use_zlib=false skia_use_libjpeg_turbo_encode=false skia_use_libjpeg_turbo_decode=false skia_enable_fontmgr_win_gdi=false skia_use_icu=false skia_use_expat=false skia_use_xps=false skia_enable_pdf=false skia_use_wuffs=false is_debug=false extra_cflags=[\"-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\"]"
  • ninja -C out/LLVM.x64.Release