FreeBSD系统中使用clang/clang++编译Skia源码的方法

发布时间:2026/9/29 2:54:43
FreeBSD系统中使用clang/clang++编译Skia源码的方法 FreeBSD系统中使用clang/clang编译Skia源码的方法修改日期2026-02-10操作系统FreeBSD编译器clang/clang说明1本文档介绍FreeBSD系统中使用clang/clang编译Skia源码的方法说明2该编译Skia源码的方法是为了适配nim_duilib项目使用Skia库如果用于其他库使用可能需要修改编译参数说明3获取skia源码后需要更新部分源码更新方法见后续文档否则编译无法通过。使用了三个第三方库expatfreetype2fontconfig说明4操作过程中假设源码的根目录是~/develop目录如果使用其他目录可替换为实际的目录。一、准备工作安装必备的软件sudo pkg install git unzip python3 cmake ninja gn llvm fontconfig freetype2二、使用脚本自动编译推荐该脚本自动完成相关源码下载和编译工作。选定一个工作目录创建一个脚本build.sh将下面已经整理好脚本复制进去保存文件。然后在控制台为脚本文件添加可执行权限最后运行该脚本chmod x build.sh ./build.sh脚本文件内容如下#!/usr/bin/env bash git clone https://github.com/rhett-lee/skia_compile chmod x ./skia_compile/freebsd/build_skia_all_in_one.sh ./skia_compile/freebsd/build_skia_all_in_one.sh编译时如果获取skia_compile代码失败可以多重试几次。编译完成的库文件在工作目录的skia/out子目录中按编译选项放在相应的子目录。三、手动编译过程第1步获取skia源码并更新修改代码获取skia源码#!/usr/bin/env bash cd ~/develop git clone https://github.com/google/skia.git git -C ./skia checkout 34aa71b8bee4648a442b7125680232d803374f19下载源码和文档并更新skia的修改代码#!/usr/bin/env 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目录中确认一下是否更新成功#!/usr/bin/env bash cd ~/develop/ git -C ./skia status第2步编译skia编译器LLVM进入skia源码目录cd ~/develop/skia确定fontconfig和freetype2头文件和库文件在下面的路径中/usr/local/include/freetype2 /usr/local/include /usr/local/lib否则修改参数的实际路径extra_ldflags [ \-L/usr/local/lib\ ] extra_cflags[\-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\, \-I/usr/local/include/freetype2\, \-I/usr/local/include\]编译skia静态库llvm.arm64.Releasegn gen out/llvm.arm64.release --argstarget_cpu\arm64\ ar\llvm-ar\ skia_enable_fontmgr_fontconfigtrue skia_use_freetypetrue extra_ldflags [ \-L/usr/local/lib\ ] cc\clang\ cxx\clang\ is_trivial_abifalse is_official_buildtrue skia_use_libwebp_encodefalse skia_use_libwebp_decodefalse skia_use_libpng_encodefalse skia_use_libpng_decodefalse skia_use_zlibfalse skia_use_libjpeg_turbo_encodefalse skia_use_libjpeg_turbo_decodefalse skia_enable_fontmgr_win_gdifalse skia_use_icufalse skia_use_expatfalse skia_use_xpsfalse skia_enable_pdffalse skia_use_wuffsfalse skia_enable_svgtrue skia_use_expattrue skia_use_system_expatfalse is_debugfalse extra_cflags[\-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\, \-I/usr/local/include/freetype2\, \-I/usr/local/include\]ninja -C out/llvm.arm64.release编译skia静态库llvm.x64.Releasegn gen out/llvm.x64.release --argstarget_cpu\x64\ ar\llvm-ar\ skia_enable_fontmgr_fontconfigtrue skia_use_freetypetrue extra_ldflags [ \-L/usr/local/lib\ ] cc\clang\ cxx\clang\ is_trivial_abifalse is_official_buildtrue skia_use_libwebp_encodefalse skia_use_libwebp_decodefalse skia_use_libpng_encodefalse skia_use_libpng_decodefalse skia_use_zlibfalse skia_use_libjpeg_turbo_encodefalse skia_use_libjpeg_turbo_decodefalse skia_enable_fontmgr_win_gdifalse skia_use_icufalse skia_use_expatfalse skia_use_xpsfalse skia_enable_pdffalse skia_use_wuffsfalse skia_enable_svgtrue skia_use_expattrue skia_use_system_expatfalse is_debugfalse extra_cflags[\-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\, \-I/usr/local/include/freetype2\, \-I/usr/local/include\]ninja -C out/llvm.x64.release四、资源链接Skia的编译文档库如需获取最新版本的文档请点击访问skia_compilenim_duilib界面库的代码库请点击访问nim_duilibnim_duilib 是一款基于C开发的跨平台界面库源于经典的 duilib 界面库并进行了深度优化与功能扩展支持Windows/Linux/macOS/FreeBSD平台支持的Linux系统包括OpenEuler、OpenKylin、UbuntuKylin、统信UOS、中科方德、Ubuntu、Fedora、Debian等专注于简化桌面应用的高效开发。其设计融合了DirectUI理念通过XML描述界面布局实现视觉与逻辑的分离显著提升开发灵活性与维护性。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询