1、安装辅助工具
sudo apt-get install autoconf automake libtool curl make g++ unzip
2、wget https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0/protobuf-all-3.10.0.zip
3、uzip -o -d ./ protobuf-all-3.10.0.zip
4、cd到解压目录,执行以下命令安装
(默认是安装在 /usr/local,也可以通过添加--prefix==PATH参数指定安装目录)
$./configure --prefix=/usr/local/protobuf
$ make
$ make check
$ make install
5、在/etc/profile中添加如下
#(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/
#(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/
#执行程序搜索路径
export PATH=$PATH:/usr/local/protobuf/bin/
#c程序头文件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
#c++程序头文件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
#pkg-config 路径
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
6、reboot, 使用echo $LIBRARY_PATH验证是否成功
查看是否安装成功
xxx@madeMacBook-Pro desktop % protoc --version
libprotoc 3.11.3
7、生成后缀为proto的文件
1. 创建文件person.proto
xxx@madeMacBook-Pro desktop % touch person.proto
xxx@madeMacBook-Pro desktop % vim person.proto
syntax = "proto3";
message Person{
string name = 1;
int32 age = 2;
}
message Book{
string bookName = 1;
double price = 2;
}
8、转化成objc和c++文件
终端输入: $ protoc --proto_path=A --objc_out=B person.proto
其中--proto_path=后跟A是需要处理的proto文件所在的文件夹,--objc_out=指明生成的是Objective-C代码以及目标文件存放路径,B是目标文件存放路径,person.proto是需要处理的文件。
所以下面指令生成:Person.pbobjc.h Person.pbobjc.m
xxx@madeMacBook-Pro desktop % protoc --proto_path=A --objc_out=B person.proto
所以下面指令生成:person.pb.h person.pb.cc
xxx@madeMacBook-Pro desktop % protoc --proto_path=A --cpp_out=B person.proto
XCode项目中使用:利用CocoasPod,生成xxx.xcworkspace工程;将Person.pbobjc.h Person.pbobjc.m引入工程直接使用;
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
target 'ProtocoBuffer' do
use_frameworks!
pod 'Protobuf'
end
Linux项目中使用:
xxx@xxx:~/share/ProtocoClientOfChat$ g++ chat_message.cpp JsonObject.cpp main.cpp Protocal.pb.cc SerilizationObject.cpp structHeader.cpp -o
client -lboost_system -lboost_serialization -lpthread -lprotobuf