Ubuntu26.04 编译 abseil-cpp protobuf v33.6

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~。~

相关推荐
AlfredZhao3 小时前
用 crontab 给 LLM 使用量装上“监控眼”
linux
刃神太酷啦6 小时前
Linux 系统 MySQL 完整安装配置教程:从卸载 MariaDB 到优化 my.cnf----《Hello MySQL!》(1)
android·linux·c语言·c++·mysql·leetcode·mariadb
赵文宇(温玉)6 小时前
OpenEuler24.03 SP4 系统安装(欧拉/麒麟V10)
linux·openeuler·欧拉
Brilliantwxx8 小时前
【Linux】 进程(7)深度剖析 进程内核O(1)调度队列 + 饥饿问题
linux·运维·服务器
刚入门的大一新生9 小时前
Linux-命令行参数和环境变量
linux·运维·服务器
我星期八休息9 小时前
Linux I/O多路转接—epoll
java·linux·运维·服务器·开发语言·jvm·算法
wuminyu10 小时前
Java FFM处理网络读写事件源码剖析
java·linux·c语言·jvm·c++
实心儿儿10 小时前
Linux —— 数据链路层
linux·网络·智能路由器
智购科技无人售货机厂家11 小时前
2026自动售货机出货口防夹手设计:从红外检测到电机反转的工程实践~YH
大数据·linux·单片机·嵌入式硬件·微信
新时代牛马12 小时前
异常向量与VBAR_ELx:Linux entry.S 中的vectors 布局
linux·运维·服务器