You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译Chromium的vaapi_unittest时generate_fontconfig_caches失败如何解决?

问题描述

已按照Chromium官方指南在Ubuntu系统上完成Chromium源码编译,现尝试编译vaapi_unittest单元测试。起初因缺少TTF字体编译失败,在third_party/test_fonts/test_fonts/目录添加大量字体后,又出现如下错误:generate_fontconfig_caches failed with exit code 1

编译日志片段:

$ autoninja vaapi_unittest
[25/1011] CXX obj/ui/base/x/x/x11_util.o
...
[789/1009] ACTION //third_party/test_fonts/fontconfig:do_generate_fontconfig_caches(//build/toolchain/linux:clang_x64)
FAILED: fontconfig_caches/fb5c91b2895aa445d23aebf7f9e2189c-le64.cache-7 
python3 ../../build/gn_run_binary.py generate_fontconfig_caches
generate_fontconfig_caches failed with exit code 1
[802/1009] CXX obj/media/gpu/chromeos/chromeos/video_decoder_pipeline.o
ninja: build stopped: subcommand failed.

需求:解决该错误,或者让vaapi_unittest不依赖字体及其缓存。


解决方案

一、修复fontconfig缓存生成失败问题

1. 清理旧缓存文件

删除已生成的缓存目录,避免残留文件导致冲突:

rm -rf third_party/test_fonts/fontconfig/fontconfig_caches/

执行完成后重新运行autoninja vaapi_unittest,让系统重新生成缓存。

2. 检查字体文件有效性

添加的字体可能存在损坏或格式不兼容的情况,逐个验证:

  • 使用fc-validate命令检查单个字体:
    fc-validate third_party/test_fonts/test_fonts/[你的字体文件名].ttf
    
  • 删除所有验证失败的字体,只保留格式正常的TTF/OTF文件。

3. 手动生成fontconfig缓存

绕过自动生成脚本,手动调用fc-cache生成缓存:

cd third_party/test_fonts/fontconfig/
fc-cache -v -f -s .

生成后将缓存文件重命名为编译报错中指定的文件名(例如fb5c91b2895aa445d23aebf7f9e2189c-le64.cache-7),再重新执行编译。


二、让vaapi_unittest跳过字体依赖

1. 修改GN编译参数

在Chromium源码根目录的out/[你的编译目录]/args.gn中添加以下参数:

use_test_fonts = false

然后重新生成构建文件并编译:

gn gen out/[你的编译目录]
autoninja vaapi_unittest

注:该参数会禁用全局测试字体依赖,可能影响其他依赖字体的单元测试,但vaapi_unittest核心功能不依赖字体,通常可正常编译运行。

2. 修改BUILD.gn文件

找到media/gpu/vaapi/vaapi_unittest.cc对应的BUILD.gn配置文件,移除其中依赖//third_party/test_fonts的相关条目,保存后重新执行编译。


内容的提问来源于stack exchange,提问作者Bram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:36:35