JohnDLee 2025-03-09 10:45 采纳率: 0%
浏览 272

CMake构建protobuf依赖项目,却报错Abseil相关问题

构建带有protobuf的项目,却报以下错误,似乎是没有找到absl的库

/usr/bin/ld: libonnxtrt.a(OnnxAttrs.cpp.o): in function `google::protobuf::RepeatedField<float>::set_size(bool, int)':
/usr/local/include/google/protobuf/repeated_field.h:489: undefined reference to `absl::lts_20240116::log_internal::LogMessageFatal::LogMessageFatal(char const*, int, absl::lts_20240116::string_view)'

但是我已经安装了,并且在cmake文件中引入了target_link_libraries

find_package(Protobuf REQUIRED)
find_package(absl REQUIRED)
target_link_libraries(trtp cudart nvinfer absl::base absl::strings absl::log ${PROTOBUF_LIBRARIES} nvinfer_plugin)
  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-03-09 10:45
    关注

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

    CMake构建protobuf依赖项目,却报错Abseil相关问题

    你遇到的问题是CMake构建protobuf依赖项目时,报错Abseil相关问题。错误信息中显示 /usr/bin/ld: libonnxtrt.a(OnnxAttrs.cpp.o): in function google`,这表明编译器找不到Abseil库。

    解决方案:

    1. 检查CMakeLists.txt文件是否正确地包含了Abseil库的依赖项。通常情况下,protobuf项目中已经包含了Abseil库的依赖项,但是你可以手动添加以下代码:
    find_package(Abseil REQUIRED)
    target_link_libraries(${PROJECT_NAME} ${Abseil_LIBRARIES})
    
    1. 检查项目的build目录是否已经包含了Abseil库的编译结果。如果没有,可以尝试重新编译Abseil库:
    cmake -DCMAKE_BUILD_TYPE=Release -S path/to/abseil -B build
    cmake --build build
    
    1. 检查protobuf项目的依赖项是否正确地包含了Abseil库。如果protobuf项目使用了CMake来构建,可以检查protobuf项目的CMakeLists.txt文件是否包含了Abseil库的依赖项。

    如果你已经尝试了上述解决方案,但是问题仍然存在,可以提供更多的错误信息和项目结构信息,以便更好地帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月9日