- 修改日期:2025-02-08
- 操作系统:Fedora Linux 40 (Workstation Edition)(桌面环境:GNOME Wayland)
- 编译器可选择:LLVM
- 操作过程中,源码根目录是/home/develop/目录,如果使用其他目录,可替换为实际的目录
- 说明1:该编译Skia源码的方法,是为了适配nim duilib 项目使用Skia库,如果用于其他库使用,可能需要修改编译参数
- 说明2:最新的编译方法中,不再使用Skia中依赖的第三方库,所以不再需要运行
python3 tools/git-sync-deps
来获取第三方库的源码
- 安装完成系统后,可用升级系统到最新:
sudo dnf upgrade
- 安装gcc/g++: 系统中用
sudo dnf install gcc g++
安装,安装后的版本号为:14.2.1; - 安装gdb: 系统中用
sudo dnf install gdb
安装,安装后的版本号为:15.1; - 安装make: 系统中用
sudo dnf install make
安装,安装后的版本号为:4.4.1; - python3环境确认:系统自带的版本是3.12.6,可以满足需要;
- 安装cmake: 系统中用
sudo dnf install cmake
安装,安装后的版本号为:3.28.2; - 安装git:系统中用
sudo dnf install git
安装,安装后的版本号为:2.47.0; - 安装ninja:系统中用
sudo dnf install ninja-build
安装,安装后的版本号为:1.12.1; - 安装gn:系统中用
sudo dnf install gn
安装,安装后的版本号为:gn-2200^20240925git95b0f8fe31a9-1.fc40.x86_64 - 安装LLVM编译环境:
(1)系统中用sudo dnf install llvm
安装,安装后的版本号为:18.1.8;
(2)系统中用sudo dnf install clang
安装,安装后的版本号为:18.1.8; - 安装libfontconfig-dev:系统中用
sudo dnf install fontconfig-devel
,安装后的版本号为:2.15.0 - 安装OpenGL:
sudo dnf install mesa-libGL-devel mesa-libGLU-devel
- >
cd /home/develop
- >
git clone https://github.com/google/skia.git
- >
git checkout 8e83e49cba3a28671d07661d88bddc3e84ae132d
- 备注:skia源码更新的日期:
Date: 2025/2/8 1:12:45
- 更新修改代码:
- 下载需要更新的代码到本地:
git clone https://github.com/rhett-lee/skia_compile
- 更新文件:解压
Skia.2025-02-08.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