GoldenDict-NG 在 Qt6 6.7.2 下的构建问题分析与解决方案
问题背景
GoldenDict-NG 是一款优秀的开源词典软件,近期在 Arch Linux 系统上使用 AUR 包构建时遇到了编译失败的问题。这个问题主要出现在系统升级到 Qt6 6.7.2 版本后,特别是在处理 FFmpeg 相关代码时出现了兼容性问题。
问题分析
主要错误表现
构建过程中最关键的失败点出现在 FFmpeg 音频处理模块的编译阶段,具体表现为:
- AVCodecContext 结构体中缺少
channels和channel_layout成员 av_get_default_channel_layout和swr_alloc_set_opts函数未声明avcodec_close函数被标记为已弃用
这些错误表明代码中使用的 FFmpeg API 与新版本的 FFmpeg 库不兼容。FFmpeg 在较新版本中对音频通道相关的 API 进行了重构,移除了旧的成员变量和函数。
其他兼容性问题
除了 FFmpeg 相关的问题外,构建过程中还出现了其他一些兼容性警告:
- QCryptographicHash 类的
addData方法被标记为已弃用 - QKeyCombination 的转换操作符被标记为已弃用
- QTouchEvent 和 QEventPoint 中的多个方法被标记为已弃用
这些警告虽然不会导致构建失败,但也表明代码需要更新以适应新版本的 Qt6 API。
解决方案
临时解决方案
对于急需使用 GoldenDict-NG 的用户,最简单的解决方案是禁用 FFmpeg 播放器支持:
cmake -DWITH_FFMPEG_PLAYER=OFF ...
这将跳过有问题的 FFmpeg 相关代码的编译,允许构建过程继续进行。不过这会牺牲掉 FFmpeg 支持的音频播放功能。
长期解决方案
从代码层面解决这个问题需要以下修改:
- 更新 AVCodecContext 的使用方式,使用新的
ch_layout成员替代旧的channels和channel_layout - 使用
swr_alloc_set_opts2替代已弃用的swr_alloc_set_opts - 使用 FFmpeg 的新版通道布局 API 替代
av_get_default_channel_layout - 更新已弃用的 Qt API 调用
系统环境配置建议
对于使用 Arch Linux 等滚动更新发行版的用户,如果系统中同时安装了多个版本的 FFmpeg,可以通过调整 PKG_CONFIG_PATH 环境变量来确保构建系统使用正确版本的 FFmpeg:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig
这可以确保构建系统优先使用系统主版本的 FFmpeg 而非兼容性版本。
构建资源管理
在构建过程中,部分用户可能会遇到编译器进程被终止的情况,这通常是由于系统内存不足导致的。建议:
- 增加交换空间(Swap)
- 关闭其他内存密集型应用
- 在内存较小的系统上,可以考虑使用
-j参数限制并行编译任务数
总结
GoldenDict-NG 在 Qt6 6.7.2 下的构建问题主要源于 FFmpeg API 的变更和部分 Qt API 的弃用。用户可以通过禁用 FFmpeg 支持作为临时解决方案,而长期解决方案需要代码层面的更新以适应新的 API。对于开发者而言,及时跟进上游依赖库的 API 变更,定期更新代码中的相关调用,是维护软件兼容性的重要工作。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
Baichuan-M3-235BBaichuan-M3 是百川智能推出的新一代医疗增强型大型语言模型,是继 Baichuan-M2 之后的又一重要里程碑。Python00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00