跨语言RPC库thrift的安装和使用
操作系统: centos7
1、简介
首先介绍下thrift的作用,thrift的全名叫做Apache thrift,是一款软件开发RPC框架,可以很高效地实现跨语言的RPC服务。
2、目标
安装支持c++和java两种语言的thrift
(一)准备java环境
到oracle官网下载java jdk
我下载的是jdk-8u144-linux-x64.tar.gz ,解压到/opt下,添加到环境变量,修改/etc/profile文件
#for java jdk
export JAVA_HOME=/opt/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
#安装JAVA ANT
官网下载 http://ant.apache.org/bindownload.cgi
wget http://mirrors.hust.edu.cn/apache//ant/binaries/apache-ant-1.10.1-bin.zip
export ANT_HOME=/usr/local/apache-ant-1.8.4
export PATH=$PATH:$ANT_HOME/bin
(二)准备c++ 环境
安装编译环境
sudo yum install automake libtool flex bison pkgconfig gcc-c++
准备boost
安装boost到系统 ./b2之后要执行sudo ./b2 install
(三)编译和安装thrift
官网下载http://thrift.apache.org/download ,最好下载release版本
wget “http://www.apache.org/dyn/closer.cgi?path=/thrift/0.10.0/thrift-0.10.0.tar.gz”
#安装
./configure --without-csharp --without-erlang --without-perl --without-php --without-php_extension --without-haskell --with-boost=/usr/local
make -j; make install
安装到系统之后,可以查看头文件路径( /usr/local/include/thrift ) 库文件路径(
/usr/local/lib/ )
添加到环境变量, 修改/etc/profile文件
export D_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
遇到的问题
1. ant的版本为1.10.1的时候,跟configure里要求的1.7比较失败。
解决办法:修改configure文件,搜索ANT_VALID,把1.7改成1.0
2. Thrift-0.10.0 CenOS 7 编译错误 error: expected ')' before 'PRIu32'。
解决办法:http://www.cnblogs.com/wanghaiyang1930/p/6404847.html
(四)使用thrift
参考http://blog.163.com/zhangjie_0303/blog/static/9908270620140311022650/
1) 编辑thrift文件
2) 生成代码
thrift -r --gen cpp student.thrift
3) 增加客户端代码和Makefile文件
cd gen-cpp
4) 生成客户端和服务端可执行文件,执行测试
make; ./CppServer &;./CppClient
发现客户端端可以跟服务端通信了,达到了远程调用的目的。