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

Ubuntu16.04编译gem5出现protobuf未定义引用错误导致构建失败如何解决

gem5编译protobuf符号未定义报错解决方案

报错原因

该undefined reference to 'google::protobuf::internal::empty_string_'报错核心原因是编译时使用的protobuf头文件版本,和链接阶段使用的protobuf库版本不匹配,或是gem5编译脚本未正确引入protobuf的链接参数。

修复步骤

  • 第一步:清理系统中多版本protobuf冲突
    先执行命令检查当前protobuf安装情况:
    dpkg -l | grep protobuf
    如果存在多个版本的protobuf开发包,先统一卸载现有安装:
    sudo apt-get remove --purge libprotobuf-dev protobuf-compiler
    再重新安装和你环境匹配的2.6.1版本:
    sudo apt-get install libprotobuf-dev=2.6.1-1.3 protobuf-compiler=2.6.1-1.3
    安装完成后执行sudo ldconfig刷新动态库缓存。

  • 第二步:编译gem5时显式指定protobuf参数
    执行scons编译命令时,手动传入protobuf的编译和链接参数,避免脚本自动检测出错,示例命令如下(可根据你需要编译的架构替换X86为对应架构):
    scons build/X86/gem5.opt -j$(nproc) CC=gcc-4.8 CXX=g++-4.8 PROTOBUF_CFLAGS=pkg-config --cflags protobuf PROTOBUF_LIBS=pkg-config --libs protobuf``

  • 第三步:手动编译安装protobuf(可选,前两步失效时使用)
    如果系统源的protobuf包仍有问题,可以下载protobuf 2.6.1源码手动编译安装:
    解压源码包后依次执行以下命令:

    ./configure --prefix=/usr/local
    make -j$(nproc)
    sudo make install
    sudo ldconfig
    

    安装完成后重新执行第二步的gem5编译命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:03