linux下安装protobuf教程
来源:互联网 发布:手机淘宝推荐怎么设置 编辑:程序博客网 时间:2024/05/07 03:32
1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。
安装步骤如下所示:
tar -xzf protobuf-2.1.0.tar.gz
cd protobuf-2.1.0
./configure --prefix=/usr/local/protobuf
make
make check
make install
2 > sudo vim /etc/profile
添加
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
保存执行
source /etc/profile
同时 在~/.profile中添加上面两行代码,否则会出现登录用户找不到protoc命令
sudo vim /etc/ld.so.conf
插入:
/usr/local/protobuf/lib
4 > su #root 权限
ldconfig
5> 写消息文件:msg.proto
package lm;
message helloworld
{
required int32 id = 1; // ID
required string str = 2; // str
optional int32 opt = 3; //optional field
}
将消息文件msg.proto映射成cpp文件
protoc -I=. --cpp_out=. msg.proto
可以看到生成了
msg.pb.h 和msg.pb.cc
6> 写序列化消息的进程
write.cc
#include "msg.pb.h"
#include <fstream>
#include <iostream>
using namespace std;
int main(void)
{
lm::helloworld msg1;
msg1.set_id(101);
msg1.set_str("hello");
fstream output("./log", ios::out | ios::trunc | ios::binary);
if (!msg1.SerializeToOstream(&output)) {
cerr << "Failed to write msg." << endl;
return -1;
}
return 0;
}
编译 write.cc
g++ msg.pb.cc write.cc -o write `pkg-config --cflags --libs protobuf` -lpthread
执行write
./write, 可以看到生成了log文件
7> 写反序列化的进程
reader.cc
#include "msg.pb.h"
#include <fstream>
#include <iostream>
using namespace std;
void ListMsg(const lm::helloworld & msg) {
cout << msg.id() << endl;
cout << msg.str() << endl;
}
int main(int argc, char* argv[]) {
lm::helloworld msg1;
{
fstream input("./log", ios::in | ios::binary);
if (!msg1.ParseFromIstream(&input)) {
cerr << "Failed to parse address book." << endl;
return -1;
}
}
ListMsg(msg1);
}
编译:g++ msg.pb.cc reader.cc -o reader `pkg-config --cflags --libs protobuf` -lpthread
执行./reader 输出 :
101
hello
8> 写Makefile文件
all: write reader
clean:
rm -f write reader msg.*.cc msg.*.h *.o log
proto_msg:
protoc --cpp_out=. msg.proto
write: msg.pb.cc write.cc
g++ msg.pb.cc write.cc -o write `pkg-config --cflags --libs protobuf`
reader: msg.pb.cc reader.cc
g++ msg.pb.cc reader.cc -o reader `pkg-config --cflags --libs protobuf`
安装步骤如下所示:
tar -xzf protobuf-2.1.0.tar.gz
cd protobuf-2.1.0
./configure --prefix=/usr/local/protobuf
make
make check
make install
2 > sudo vim /etc/profile
添加
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
保存执行
source /etc/profile
同时 在~/.profile中添加上面两行代码,否则会出现登录用户找不到protoc命令
使用protoc --version查看版本信息
sudo vim /etc/ld.so.conf
插入:
/usr/local/protobuf/lib
4 > su #root 权限
ldconfig
5> 写消息文件:msg.proto
package lm;
message helloworld
{
required int32 id = 1; // ID
required string str = 2; // str
optional int32 opt = 3; //optional field
}
将消息文件msg.proto映射成cpp文件
protoc -I=. --cpp_out=. msg.proto
可以看到生成了
msg.pb.h 和msg.pb.cc
6> 写序列化消息的进程
write.cc
#include "msg.pb.h"
#include <fstream>
#include <iostream>
using namespace std;
int main(void)
{
lm::helloworld msg1;
msg1.set_id(101);
msg1.set_str("hello");
fstream output("./log", ios::out | ios::trunc | ios::binary);
if (!msg1.SerializeToOstream(&output)) {
cerr << "Failed to write msg." << endl;
return -1;
}
return 0;
}
编译 write.cc
g++ msg.pb.cc write.cc -o write `pkg-config --cflags --libs protobuf` -lpthread
执行write
./write, 可以看到生成了log文件
7> 写反序列化的进程
reader.cc
#include "msg.pb.h"
#include <fstream>
#include <iostream>
using namespace std;
void ListMsg(const lm::helloworld & msg) {
cout << msg.id() << endl;
cout << msg.str() << endl;
}
int main(int argc, char* argv[]) {
lm::helloworld msg1;
{
fstream input("./log", ios::in | ios::binary);
if (!msg1.ParseFromIstream(&input)) {
cerr << "Failed to parse address book." << endl;
return -1;
}
}
ListMsg(msg1);
}
编译:g++ msg.pb.cc reader.cc -o reader `pkg-config --cflags --libs protobuf` -lpthread
执行./reader 输出 :
101
hello
8> 写Makefile文件
all: write reader
clean:
rm -f write reader msg.*.cc msg.*.h *.o log
proto_msg:
protoc --cpp_out=. msg.proto
write: msg.pb.cc write.cc
g++ msg.pb.cc write.cc -o write `pkg-config --cflags --libs protobuf`
reader: msg.pb.cc reader.cc
g++ msg.pb.cc reader.cc -o reader `pkg-config --cflags --libs protobuf`
0 0
- linux下安装protobuf教程
- linux下安装protobuf教程+示例
- linux下安装protobuf教程+示例
- Linux下安装protobuf
- linux下安装protobuf教程+示例(详细)
- linux下安装protobuf教程+示例(详细)
- linux下安装protobuf教程+示例(详细)
- linux下安装protobuf教程+示例(详细)
- linux下安装protobuf教程+示例(详细)
- linux下安装protobuf教程+示例(详细)
- linux下安装protobuf教程+示例(详细)
- LINUX下编译安装PROTOBUF
- linux 下安装protobuf-c
- linux下编译安装protobuf
- LINUX下编译安装PROTOBUF
- LINUX下编译安装PROTOBUF
- linux下protobuf环境安装
- Linux下安装Google protobuf
- uva 247 Calling Circles(Floyd 的简单应用)
- 修改mysql数据表
- Gradle,构建工具的未来
- 1962年 电影版 越剧红楼梦 剧本
- Qt windows开机自启动
- linux下安装protobuf教程
- Python内建函数之——filter,map,reduce
- 4.快速排序
- 微型 Python Web 框架: Bottle
- BS 之 浅析SQL注入
- 最长公共前缀
- 在vmware虚拟机下安装centos
- hdu 2571 命运(DP)
- 关于日常系统文件备份脚本一条命令