☰
OpenKylin开放麒麟系统中使用LLVM或者gcc编译Skia源码的方法
2026/9/29 5:26:44 网站建设 项目流程

OpenKylin开放麒麟系统中使用LLVM或者gcc编译Skia源码的方法

  • 修改日期:2026-02-10
  • 操作系统:openKylin-Desktop-V2.0 64位版本(桌面环境:Wayland)
  • 编译器:LLVM or gcc
  • 说明1:本文档介绍OpenKylin开放麒麟系统中使用LLVM或者gcc编译Skia源码的方法
  • 说明2:该编译Skia源码的方法,是为了适配nim_duilib项目使用Skia库,如果用于其他库使用,可能需要修改编译参数
  • 说明3:获取skia源码后,需要更新部分源码(更新方法见后续文档),否则编译无法通过。(使用了一个第三方库:expat)
  • 说明4:操作过程中,假设源码的根目录是~/develop目录,如果使用其他目录,可替换为实际的目录。

一、准备工作:安装必备的软件

  1. 安装完成系统后,可用升级系统到最新:
    (1)sudo apt update
    (2)sudo apt upgrade -y

  2. 安装依赖的软件(和Ubuntu完全一样)

sudo apt install -y gcc g++ gdb make git ninja-build generate-ninja python3 cmake \ llvm clang unzip libfontconfig-dev libgl1-mesa-dev \ libgles2-mesa-dev libegl1-mesa-dev libvulkan-dev

安装完成后的各个软件版本信息如下:

gcc 已经是最新版 (4:12.2.0-ok1)。 g++ 已经是最新版 (4:12.2.0-ok1)。 gdb 已经是最新版 (15.0.50.20240403-ok2.2)。 make 已经是最新版 (4.3-ok1)。 git 已经是最新版 (1:2.43.0-ok4)。 ninja-build 已经是最新版 (1.11.1-ok1)。 generate-ninja 已经是最新版 (0.0~git20240221.03d10f1-ok2)。 python3 已经是最新版 (3.12.2-ok1)。 cmake 已经是最新版 (3.28.3-ok4)。 llvm 已经是最新版 (1:17.0-58~exp1-ok1)。 clang 已经是最新版 (1:17.0-58~exp1-ok1)。 unzip 已经是最新版 (6.0-ok3)。 libfontconfig-dev 已经是最新版 (2.15.0-ok5)。 libgl1-mesa-dev 已经是最新版 (24.0.5-ok1)。 libgles2-mesa-dev 已经是最新版 (24.0.5-ok1)。 libegl1-mesa-dev 已经是最新版 (24.0.5-ok1)。 libvulkan-dev 已经是最新版 (1.3.275.0-ok2)。

二、使用脚本自动编译(推荐)

该脚本自动完成相关源码下载和编译工作。
选定一个工作目录,创建一个脚本build.sh,将下面已经整理好脚本复制进去,保存文件。
然后在控制台,为脚本文件添加可执行权限,最后运行该脚本:

chmod +x build.sh ./build.sh

脚本文件内容如下:

#!/bin/bash git clone https://github.com/rhett-lee/skia_compile chmod +x ./skia_compile/linux/build_skia_all_in_one.sh ./skia_compile/linux/build_skia_all_in_one.sh

编译时如果获取skia_compile代码失败,可以多重试几次。
编译完成的库文件在工作目录的skia/out子目录中,按编译选项放在相应的子目录。

三、手动编译过程

第1步:获取skia源码并更新修改代码

  1. 获取skia源码:
#!/bin/bash mkdir ~/develop cd ~/develop git clone https://github.com/google/skia.git git -C ./skia checkout 34aa71b8bee4648a442b7125680232d803374f19
  1. 下载源码和文档,并更新skia的修改代码:
#!/bin/bash cd ~/develop git clone https://github.com/rhett-lee/skia_compile unzip -o ./skia_compile/skia.2026-02-10.src.zip -d ./skia/

更新完成后,可以到skia目录中确认一下是否更新成功

#!/bin/bash cd ~/develop git -C ./skia status

第2步:编译skia(编译器:LLVM)

  1. 进入skia源码目录:
    >cd ~/develop/skia
  2. 编译skia静态库(gcc.x64.release)
  • gn gen out/gcc.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 skia_enable_svg=true skia_use_expat=true skia_use_system_expat=false is_debug=false extra_cflags=[\"-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\"]"
  • ninja -C out/gcc.x64.release

四、备注:使用LLVM编译时,遇到编译错误,无法识别标准库的头文件。

五、资源链接

  1. Skia的编译文档库,如需获取最新版本的文档,请点击访问:skia_compile
  2. nim_duilib界面库的代码库,请点击访问:nim_duilib
    nim_duilib 是一款基于C++开发的跨平台界面库,源于经典的 duilib 界面库并进行了深度优化与功能扩展,支持Windows/Linux/macOS/FreeBSD平台,支持的Linux系统包括OpenEuler、OpenKylin、UbuntuKylin、统信UOS、中科方德、Ubuntu、Fedora、Debian等,专注于简化桌面应用的高效开发。其设计融合了DirectUI理念,通过XML描述界面布局,实现视觉与逻辑的分离,显著提升开发灵活性与维护性。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询