整个安装过程都是在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