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

Ubuntu 20.04编译Protocol Buffers 3.18.0时protobuf-test测试失败问询

Protobuf 3.18.0 测试失败原因分析

失败常见原因

  • 内存不足(概率最高)
    protobuf-test是Protobuf完整功能集的测试套件,运行时需要加载数百个测试用例、批量创建各类Protobuf对象,3.18.0版本的该测试峰值内存占用约为4~5GiB。你的设备内存仅3.8GiB,若未配置足够的swap分区,测试进程很容易被系统OOM机制直接终止,从而报错。其余6项测试均为轻量化测试(比如Lite版本测试、单模块功能测试),内存占用远低于protobuf-test,所以能全部通过,完全符合内存不足的表现。
  • 版本适配问题(概率较低)
    Protobuf 3.18.0是较老的版本,在Ubuntu 20.04.3 LTS上存在少量已知的测试用例兼容性bug,但这类问题通常会在test-suite.log中输出明确的断言失败日志,不会直接终止测试进程。
  • 编译依赖缺失(概率极低)
    若configure阶段有依赖遗漏,通常会导致多个测试失败,不会仅出现protobuf-test单测失败的情况。

验证方法

查看src/test-suite.log文件中的具体错误输出:

  • 如果日志中存在Killed、Out of memory、OOM相关字样,即可确认是内存配置不足导致的失败。
  • 如果日志中是明确的用例断言失败,则为版本适配问题。

解决方案

如果确认是内存不足导致的问题,可通过临时增加4G swap分区解决:

# 创建4G swap文件
sudo fallocate -l 4G /swapfile
# 配置swap权限
sudo chmod 600 /swapfile
# 格式化swap
sudo mkswap /swapfile
# 启用swap
sudo swapon /swapfile
# 重新运行测试
make check

若不需要使用Protobuf全量高级特性,仅需核心功能或Lite版本功能,也可以直接跳过该测试,执行sudo make install安装使用,其余6项测试通过已经可以保证核心功能正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:45:03