CentOS7 安装 protobuf-2.5.0


Step1:

解压proto包,我是服务端代码都集成到了一个文件夹中,所以直接把整个文件夹上传。


Step2:

运行proto文件夹下的configure执行文件。./configure --prefix=/usr/local/protobuf

注意:--prefix 千万记得加,否则后续会出现问题。

问题:报错,内容为“bash . /configure permission denied”。

解决:如果改为执行 $ bash ./configure 就没问题了,为什么会出现这个问题呢?因为configure为可执行文件,相当于windows中的exe文件,不加以权限设置无法直接运行。所以需要在当前目录执行 $ chmod +x ./configure ,即为configure文件添加可执行性,然后通过 $ ./configure 即可以运行。

Step3:

  make 
  make check 
  make install 
 
Step4:
权限添加:vim /etc/profile
 export PATH=$PATH:/usr/local/protobuf/bin/
 export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
保存执行:source /etc/profile

Step5:
权限添加:vim ~/.profile
 export PATH=$PATH:/usr/local/protobuf/bin/
 export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
保存执行:source ~/.profile

Step6:
配置动态链接库路径:vim /etc/ld.so.conf
在后面插入这行代码:/usr/local/protobuf/lib

Step7:
ldconfig

Step8:
编写proto消息文件并编译
  1. package ProtoLogin;
  1. message ReqLogin
    {
       required string user_acount = 1;
       required string user_passwd = 2;
    }
将消息文件 login.proto映射成cc文件:protoc -I=. --cpp_out=. login.proto
如果看到这两个文件说明生成成功:login.pb.h 和login.pb.cc

Step9:
使用proto打包解包
  1. #include "login.pb.h"  
  1. void CLogin::DatasProcess(char* pstMsgBody, int iBodyLen)
  1. {
  1. ProtoLogin::ReqLogin ReqLogin;
    ReqLogin.ParseFromArray(pstMsgBody,iBodyLen);
    std::string user_acount = ReqLogin.user_acount();
    std::string user_passwd = ReqLogin.user_passwd();
  1. }
 
Step10:
makefile文件编写
  1. all: login.pb.o Login.o
  1. login.pb.o: ./serverlogin/login.pb.cc ./serverlogin/login.pb.h
    g++ -c ./serverlogin/login.pb.cc -o login.pb.o

    Login.o: ./serverlogin/Login.cpp ./serverlogin/Login.h
    g++ -c ./serverlogin/Login.cpp -o Login.o
  1. server: login.pb.o Login.o server
    g++
      login.pb.o Login.o server.cpp -o server `pkg-config --cflags --libs protobuf` -lpthread
    clean:
    rm *.o server

PS :  以上makefile文件g++编译的一行中有--libs protobuf。--libs是加载动态链接库,实际上我们还可以把生成静态库直接编译到生成的可执行文件中。写法如下:
  1. g++  login.pb.o Login.o server.cpp -o server -L$(BASEDIR)/lib/protobuf-2.5.0-lib/ -lprotobuf -lpthread
    1. 其中$(BASEDIR)/lib/ 是我自己工程的文件夹,在服务器上安装完成proto之后,把生成的libprotobuf.a拷贝到
      1. $(BASEDIR)/lib/ 下。




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值