• 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
  • 相关阅读:
    vue中使用CodeMirror解析yaml语言
    年底了,我劝大家真别轻易离职...
    STM32单片机上传字符串到阿里云
    xcode swift 单元测试 test
    C# 第七章『I/O数据流』◆第3节:File类、FileInfo类(小例)
    VoLTE端到端业务详解 | S1AP协议
    私域流量时代来临,电商企业如何布局?
    JavaScript的位操作符你知道吗?
    ‘vue‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
    9. 一个SpringBoot项目运行
  • 原文地址:https://blog.csdn.net/sinat_21699465/article/details/134269527