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

编译一个小代码进行测试

mkdir examples
cd examples
git clone https://github.com/abseil/abseil-cpp.git
touch hello_world.cc
touch CMakeLists.tx

填充代码和cmakelist文件
hello_world.cc

#include <iostream>
#include <string>
#include <vector>
#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";
}

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)

编译运行

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

安装步骤参考官方: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/

查看是否删除完与查看版本方法一致: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

检查安装

protoc --version
期待输出:libprotoc 3.21.11
which protoc
期待输出:/usr/local/bin/protoc

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

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

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

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

./bootstrap.sh
./b2
sudo ./b2 install
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值