JohnDLee 2025-03-08 23:05 采纳率: 0%
浏览 124

CMake构建Protobuf依赖项目报错,protoc与libprotobuf.a版本不匹配

通过源代码安装的Protobuf 30.0,CMake过程却报如下错误

CMake Warning at /usr/share/cmake-3.22/Modules/FindProtobuf.cmake:524 (message):
  Protobuf compiler version 30.0 doesn't match library version 6.30.0

提示信息为libprotobuf.a版本是6.30.0

-- Found Protobuf: /usr/local/lib/libprotobuf.a (found version "6.30.0") 

但是很奇怪,看时间戳这个文件就是刚安装的,怎么会跟自己版本不匹配呢?

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2025-03-08 23:05
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你遇到的问题是CMake构建Protobuf依赖项目时报错,错误信息是protoc与libprotobuf.a版本不匹配。这个问题可能是因为你安装的Protobuf版本和CMake找到的Protobuf版本不一致。

    解决方法是:

    1. 检查你安装的Protobuf版本,使用命令protoc --version查看版本号。
    2. 检查CMake找到的Protobuf版本,使用命令cmake --find-protobuf查看版本号。
    3. 如果版本不匹配,可以尝试使用cmakeprotobuf_version变量来指定Protobuf版本,例如:
    find_package(Protobuf REQUIRED)
    set(protobuf_version 3.0.0)
    set(CMAKE_PROTOBUF_VERSION ${protobuf_version})
    
    1. 如果以上方法不行,可以尝试使用protobuf::protobuf模块来指定Protobuf版本,例如:
    find_package(Protobuf REQUIRED)
    target_link_libraries(${PROJECT_NAME} ${protobuf_LIBRARIES})
    
    1. 如果你使用的是CMake 3.22以上版本,可以尝试使用protobuf::protobuf模块的protobuf_version变量来指定Protobuf版本,例如:
    find_package(Protobuf REQUIRED)
    target_link_libraries(${PROJECT_NAME} ${protobuf_LIBRARIES})
    set(protobuf_version 3.0.0)
    set(CMAKE_PROTOBUF_VERSION ${protobuf_version})
    

    这些方法可以帮助你解决protoc与libprotobuf.a版本不匹配的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日