微信后台phxrpc编译及QtCreator工程下载

微信在2016年发布了一个RPC框架phxrpc,github地址是:https://github.com/Tencent/phxrpc。号称微信后台很多地方都使用到了。

一、编译

本人的环境是CentOS 7,gcc 4.8.5,支持C++ 11。

参考文档可以见微信:编译说明

此处自己来总结一下: 
PhxRPC必须依赖的第三方库只有protobuf。在编译前,在third_party目录放置好protobuf目录,或者通过软链的形式。这个third_party目录是没有的,需要自己创建,并且将protobuf代码放进去,也就是说,third_party和sample,plugin_boost等文件夹是同级关系。

另外,我下载的Protobuf版本是3.5.2。https://github.com/protocolbuffers/protobuf

1.编译protobuf

进入third_party/protobuf目录。
./autogen.sh
./configure CXXFLAGS=-fPIC -prefix=[当前目录绝对路径], 这一步CXXFLAGS和-prefix都必须设置对。

例如我的路径是:/home/firecat/Prj/1mystudyhard/rpc/phxrpc/third_party/protobuf
make && make install
编译完成后检查是否在当前目录成功生成bin,include,lib三个子目录。

[root@localhost protobuf]# ./autogen.sh
[root@localhost protobuf]# ./configure CXXFLAGS=-fPIC -prefix=/home/firecat/Prj/1mystudyhard/rpc/phxrpc/third_party/protobuf
[root@localhost protobuf]# make
[root@localhost protobuf]# make install


2.编译phxrpc

进入PhxRPC根目录。
make
编译完成后检查是否生成lib子目录,并检查lib目录下是否生成静态库libphxrpc.a.


3.代码自动生成

上面三步其实不仅生成了libphxrpc.a,还生成了sample中的代码。

sample中的代码默认生成使用的是:
../codegen/phxrpc_pb2server -I ../ -I ../third_party/protobuf/include -f search.proto -d .
所以如果想要生成的worker是使用协程方式执行,需要在sample下重新生成,或者你直接修改sample中的Makefile文件就OK:

../codegen/phxrpc_pb2server -I ../ -I ../third_party/protobuf/include -f search.proto -d . -u


4.运行 
进入sample,执行server:

./search_main -c search_server.conf
后面的-c是server的配置文件。

执行client:

./search_tool_main -f PHXEcho -s "hello"
这个search_tool_main是封装了client的可执行文件,上面的-f代表需要调用server中的哪个函数,-s代表这个函数需要什么参数。 
如果需要使用方法,直接执行:

./search_tool_main
会有usage的提示。

 

5.为了方便源码的查看和单步断点调试,本人整理成了QtCreator工程,请下载:

https://download.csdn.net/download/libaineu2004/10854976

注意,里面的工程文件.pro有误,修正为:

INCLUDEPATH += \
    ../

  # ../../phxrpc

 

---

参考文献:

https://blog.csdn.net/shanshanpt/article/details/55213287

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值