Ubuntu26.04 编译 abseil-cpp protobuf
1、因为新版本的protobuf编译依赖abseil,系统如果没有安装或者安装的版本较低或者又不想每次都触发protobuf的依赖兜底,去下载对应的abseil,故先编译安装abseil。
2、版本选择,较新又稳定故选择 v33.6版本,对应的abseil 20250512.1
3、编译环境自己准备,缺什么装什么。
大概需要的:
sudo apt update
sudo apt install -y build-essential cmake ninja-build git curl unzip pkg-config zlib1g-dev
好戏开始了:
下载源码 魔法上网,不然下载巨慢,这就是为什么要提前编译abseil
1、下载并生成cmake工程
git clone --branch 20250512.1 --depth 1 https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
cmake -S . -B build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib/$(gcc -dumpmachine) \
-DABSL_ENABLE_INSTALL=ON \
-DBUILD_SHARED_LIBS=ON
2、编译与安装
cmake --build build --parallel $(nproc)
sudo cmake --install build
sudo ldconfig
查看是否安装成功
find /usr /usr/local -name "abslConfig.cmake" 2>/dev/null
应该显示
/usr/lib/x86_64-linux-gnu/cmake/absl/abslConfig.cmake
3、protobufv33.6下载
curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v33.6/protobuf-33.6.tar.gz
tar -xf protobuf-33.6.tar.gz
cd protobuf-33.6
4、protobufv33.6 生成cmake工程
cmake -S . -B build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib/$(gcc -dumpmachine) \
-Dprotobuf_BUILD_TESTS=OFF \
-DBUILD_SHARED_LIBS=ON
如果失败,还是没找到改成
cmake -S . -B build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib/$(gcc -dumpmachine) \
-Dabsl_DIR=/usr/lib/$(gcc -dumpmachine)/cmake/absl \
-Dprotobuf_BUILD_TESTS=OFF \
-DBUILD_SHARED_LIBS=ON
5、protobufv33.6编译与安装
cmake --build build --parallel $(nproc)
sudo cmake --install build
sudo ldconfig
6、验证:
which protoc
protoc --version
期望结果:
/usr/bin/protoc
libprotoc 33.6
Enjoy~。~