• protobuf相关安装


    整个安装过程都是在root用户下

    预备安装:abseil库

    https://github.com/abseil/abseil-cpp.git
    cd abseil-cpp
    mkdir build && cd build
    编译
    cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON -DCMAKE_CXX_STANDARD=14 ..
    安装
    cmake --build . --target all
    验证
    ctest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    编译一个小代码进行测试

    mkdir examples
    cd examples
    git clone https://github.com/abseil/abseil-cpp.git
    touch hello_world.cc
    touch CMakeLists.tx
    
    • 1
    • 2
    • 3
    • 4
    • 5

    填充代码和cmakelist文件
    hello_world.cc

    #include 
    #include 
    #include 
    #include "absl/strings/str_join.h"
    
    int main() {
      std::vector<std::string> v = {"foo","bar","baz"};
      std::string s = absl::StrJoin(v, "-");
    
      std::cout << "Joined string: " << s << "\n";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    cmake文件

    cmake_minimum_required(VERSION 3.10)
    
    project(my_project)
    
    # Abseil requires C++14
    set(CMAKE_CXX_STANDARD 14)
    
    # Process Abseil's CMake build system
    add_subdirectory(abseil-cpp)
    
    add_executable(hello_world hello_world.cc)
    
    # Declare dependency on the absl::strings library
    target_link_libraries(hello_world absl::strings)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    编译运行

    mkdir build && cd build
    cmake ..
    cmake --build . --target hello_world
    ./hello_world
    如果输出下面这行表示没有问题
    Joined string: foo-bar-baz
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    安装步骤参考官方:https://abseil.io/docs/cpp/quickstart

    protobuf 安装

    旧版本or损坏版删除

    查看
    ls /usr/local/bin/
    ls /usr/local/include/google
    ls /usr/local/lib/
    删除
    rm -rf  /usr/local/lib/libproto*
    rm -rf /usr/local/bin/protoc*
    rm -rf /usr/local/include/google/protobuf/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    查看是否删除完与查看版本方法一致:protoc --version 和 which protoc

    正式安装

    1.版本选择问题,不建议使用3.21.11以上的版本。新版本比旧版本多了一个abseil的三方库。且安装方式比较复杂。
    cmake安装3.21.11以上的版本:
    踩坑包括不限于,编译安装通过,但proto版本不适配,或者abseil库版本不适配。没有生成动态库,生成动态库,但是没有runtimepath,指定runtimepath,但是依然存在找不到库或c++编译版本问题
    指定了动态库,指定runtimepath,指定CMAKE_CXX_STANDARD,指定abseil的三方库的CMAKE_CXX_STANDARD版本,指定安装路径,都不太行,各种问题
    bazel安装3.21.11以上的版本:
    编译安装没出错,但使用依旧有问题。就不一一列举。
    cmake安装3.21.11版本
    不要使用git clone下来的源码进行cmake,选择从releases下载的内容
    源码没有configure文件,无法使用老式安装,只能cmake,注意避雷

    wget https://github.com/protocolbuffers/protobuf/releases/download/v21.11/protobuf-cpp-3.21.11.zip
    unzip protobuf-cpp-3.21.11.zip 
    cd protobuf-3.21.11/
    ./autogen.sh
    ./configure
    make
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    检查安装

    protoc --version
    期待输出:libprotoc 3.21.11
    which protoc
    期待输出:/usr/local/bin/protoc
    
    • 1
    • 2
    • 3
    • 4

    如果输出报错为:找不到动态库libproto.so.32
    那么需要进行一下配置:

    vim /etc/ld.so.conf
    在文件最后添加一行安装地址:上述默认安装地址为/usr/local/lib/
    sudo ldconfig
    
    • 1
    • 2
    • 3

    此时再进行检查安装就不会出现错误

    gflags、googletest、serial、catkin库都是可以通过github直接安装的,安装过程可以参考GitHub上自带的安装说明
    boost库选择的是下载安装方式(https://www.boost.org/),版本推荐1.83.0
    安装过程主要参考poe和官网

    ./bootstrap.sh
    ./b2
    sudo ./b2 install
    
    • 1
    • 2
    • 3
  • 相关阅读:
    计算机毕业设计(附源码)python在线学习平台
    【图神经网络论文整理】(六)—— Universal Graph Transformer Self-Attention Networks
    小谈设计模式(21)—迭代器模式
    Polygon zkEVM中Goldilock域元素circom约束
    自动巡查、自动换充电……浙江这两台无人机“巢穴”派大用场
    Linux-进程、任务和作业管理
    自动化测试
    揭秘B站,程序员穿女装敲代码,效率更高是真的吗?
    javascript-根据数组中的一个属性或多个属性对数组进行排序
    合宙ESP32C3之Arduino、MicroPython上手
  • 原文地址:https://blog.csdn.net/sinat_21699465/article/details/134269527