- 修改日期: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)升级系统:sudo apt update
(2)升级系统:sudo apt upgrade
- 安装gcc/g++: 系统中用
sudo apt install gcc g++
安装,安装后的版本号为:14.2.0; - gdb环境确认:系统自带,GNU gdb 15.1;
- 安装make: 系统中用
sudo apt install make
安装,安装后的版本号为:4.3.4; - python环境确认:系统自带的版本是3.12.7,可以满足需要;
- 安装cmake: 系统中用
sudo apt install cmake
安装,安装后的版本号为:3.30.3; - 安装git:系统中用
sudo apt install git
安装,安装后的版本号为:2.45.2; - 安装ninja:系统中用
sudo apt install ninja-build
安装,安装后的版本号为:1.12.1; - 安装gn:系统中用
sudo apt install generate-ninja
安装,安装后的版本号为:0.0~git20240328.93ee9b9-1 - 安装LLVM编译环境:
(1)系统中用sudo apt install llvm
安装,安装后的版本号为:19.1.1;
(2)系统中用sudo apt install clang
安装,安装后的版本号为:19.1.1; - 安装libfontconfig:系统中用
sudo apt install libfontconfig-dev
,安装后的版本号为:2.15.0 - 安装OpenGL:
sudo apt install libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
- >
cd /home/develop
- >
git clone https://github.com/google/skia.git
- >
git checkout 39bd1d3f242aa241c42cfb6a9de91508017eda03
- 备注:skia源码更新的日期:
Date: 2024/10/11 15:03:09
- 更新修改代码:
- 下载需要更新的代码到本地:
git clone https://github.com/rhett-lee/skia_compile
- 更新文件:解压
Skia.2024-10-13.src.zip
,将解压后的文件,覆盖/home/develop/skia/目录中的所有同名文件。 - 注意事项:该修改的代码的SHA-1值,需要比对,如果不是这个版本的代码,直接覆盖可能有问题,需要手工修改;
- 修改代码解决的问题:修改部分其他源码:修复运行时的几个小问题。
- 进入skia源码目录:
>cd /home/develop/skia
- 编译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源码目录:
>cd /home/develop/skia
- 编译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