Thrift编译安装指南

2019-10-27 09:25:57 来源:易采站长站 作者:刘景俊

前言:thrift的版本问题比较麻烦,高版本的在c++上需要c++ 11的支持,而低版本则可能在go的支持上有问题,测试发现thrift 9.0以上需要c++ 11,而thrift 8.0则在go的支持上可能会存在问题。使用的发行版本是CentOS 6.5,GCC 4.4.7。最终选择使用thrift-0.8.0来编译安装。

一. 编译安装

wget http://archive.apache.org/dist/thrift/0.8.0/thrift-0.8.0.tar.gz

tar -zxvf thrift-0.8.0.tar.gz
cd thrift-0.11.0
./configure   #这一步配置可以选择支持的语言,如Python,c++,go等。可以./configure --help来查看可配置项。如./configure --without-go
make && make install 

注意:在执行完configure后,会显示实际上支持的库,比如

thrift 0.11.0   
Building C (GLib) Library .... : no
Building C# (Mono) Library ... : no
Building C++ Library ......... : yes
Building D Library ........... : no
Building Dart Library ........ : no
Building dotnetcore Library .. : no
Building Erlang Library ...... : no
Building Go Library .......... : no
Building Haskell Library ..... : no
Building Haxe Library ........ : no
Building Java Library ........ : no
Building Lua Library ......... : no
Building NodeJS Library ...... : no
Building Perl Library ........ : no
Building PHP Library ......... : no
Building Plugin Support ...... : no
Building Python Library ...... : yes
Building Py3 Library ......... : yes
Building Ruby Library ........ : no
Building Rust Library ........ : no

如果编译没问题,那么就可以查看一下版本thrift -version,如果能显示,那么就ok。

二. 测试使用

安装完后要搞一个小程序测试一下。thrift的使用是从.thirft文件开始的。
安装完后,自带的tutorial就有小例子,但感觉不够直观,来copy一个试试效果。

step 1 编写thrift文件 yang.thrift

struct Student{
1: i32 sno,
2: string sname,
3: bool ssex,
4: i16 sage,
}

service Serv{
     void put(1: Student s),
     i32 icall(1: Student s),
     string scall(1: Student s),
     /*
         string& srcall(1: Student s),
         -----------------------------
         -thrift -r --gen cpp student.thrift
         -error:
         -   [ERROR:/root/test/thrift/student.thrift:12] (last token was '&')
         -   syntax error
         -   [FAILURE:/root/test/thrift/student.thrift:12] Parser error during include pass.
         -----------------------------
     */
     Student stcall(1: Student s),
}

step 2 生成源代码

比如要生成c++代码,就可以 thrift -r --gen cpp yang.thrift。这样就能在目录下生成一个gen-cpp目录,里面生成了多个文件,其中的Serv_server.skeleton.cpp就是服务器端main函数入口文件。--gen后指定生成的语言,yang.thrift就是编写的thrift魔板。

step 3 编写客户端代码

微信扫一扫

易采站长站微信账号