Protobuf,全称为Protocol Buffers,是Google开发的一种轻量级的数据交换格式,主要用于结构化数据的序列化和反序列化,适用于数据存储和通信协议的定义。 google提供了protobuf多种语言的实现:java、c#、c++、go和python,每一种实现都包含了相应语言的编译器以及库文件。相比于其他序列化机制(如XML和JSON),Protobuf具有更高的性能和更小的数据体积。其序列化后的二进制格式更加紧凑,占用的存储空间更小,传输速度更快,适用于数据存储和网络通信等多种场景。
安装依赖
sudo apt install autoconf automake libtool curl make g++ unzip
下载protobuf源码
使用wget
或git clone
命令从Protobuf的GitHub仓库下载源码。
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive # 如果需要的话,更新子模块
如果你需要特定版本,可以从GitHub的Releases页面下载对应版本的tar.gz包,并解压。以3.15.8版本为例
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.8/protobuf-all-3.15.8.zip
或者
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.8/protobuf-all-3.15.8.tar.gz
下载完成后,我们需要解压下载的源码包。使用以下命令:
unzip protobuf-all-3.15.8.zip
或者,如果下载的是
.tar.gz
文件:tar -xzvf protobuf-all-3.15.8.tar.gz
进入源码目录
cd protobuf-3.15.8
编译安装
生成配置文件
./autogen.sh
配置环境
./configure
编译源码(时间较长)
make
安装
sudo make install
刷新动态库
sudo ldconfig
验证安装
安装完成后,使用protoc --version
命令来验证Protobuf是否正确安装。
安装时遇到的问题
在执行sudo ldconfig出现错误:/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn.so.8 不是符号链接,
通常是因为libcudnn.so.8
文件不是一个符号链接(symbolic link),而是一个实际的库文件。ldconfig
工具主要用于管理动态链接器运行时绑定(runtime binding)的共享库,它期望某些库文件(特别是版本化的库)是通过符号链接指向实际库文件的,以便于版本管理和更新。
- 确认 libcudnn 的安装
- 创建符号链接
sudo ln -sf /usr/local/cuda/targets/x86_64-linux/lib/libcudnn.so.8.x.x /usr/local/cuda/targets/x86_64-linux/lib/libcudnn.so.8
PS: 替换 8.x.x
为你的 libcudnn.so
文件的实际版本号。