thrift linux使用教程,Thrift使用文档详解(一步一步跟着做就可以)

Linux下使用Thrift详细步骤

一、下载

下载 boost(c++静态库,必须),官方网址

下载thrift 0.8.0版本(由于版本较老官方没有,可以自行下载)

下载thrift-0.8.0.exe(大部分是编译产生,但是由于0.8.0版本无法产生有效的可行文件,所以要下载使用,不过网上资源基本无法找到,我在所需文件的包中给了一版)

下载libevent-2.0.22-stable(windows版本所需,Linux下不需要)

二、上传

在Linux虚拟机上创建目录叫thrift,并将boost和thrfit压缩文件上传(boost较大所需时间比较长)

三、修改文件夹中所有文件的权限

由于linux对文件的权限要求比较高,所以要将文件夹中的所有文件权限修改为可执行,在此推荐一款修改权限的软件WinSCP,这款软件不仅能修改文件夹本身同时还能修改其子文件夹和文件。

四、编译boost

(所有安装请不要指定目录安装,除非你能找到,否则会导致后边无法安装thrift,因为找不到路径)

输入 ./bootstrap.sh(如果不是将所有子文件改为可执行时,此处可能导致无法通过)

再输入  ./b2

最后执行  sudo ./b2  install

第一次圈出来的时未将全部文件改为可读可执行文件夹而导致结果

第二次圈出来的是正确结果

第三次是输入./b2后的效果

五、编译thrift

1) tar -xvf thrift-0.7.0.tar.gz 解压缩文件

2) cd thrift-0.7.0 进入Thrift安装主目录

3) ./configure (可能出现权限不够,可以根据boost方法修改文件夹权限)

4) sudo make(此过程较慢)

5) sudo make install

然后再重新执行一次编译,原因是thrfit所产生的头文件和thrift文件方便查找,否则你在引入的时候不知道去哪找thrift相关的库文件和头文件,因此建议再编译一次并制定目录,由于你制定了目录,后期执行的时候又找不到执行命令会出现没有thrift这个命令的问题,所以建议编译两次,第二次编译代码从之前版本的第3步开始,并把之前的第3步改为如下:

./configure --prefix=/home/ngos/thrift/demo

所圈出的是thrift编译时产生的文件夹。

(--prefix=/root/thrift/File为要制定的生成路径,中间绝对不可以有空格)

六、制作.thrift文件

在做完以上几步之后再做.thrift文件编译才能产生正确的库,如果没有安装boost会产生头文件,但是不会产生依赖的库文件。

Demo.thrift文件内容如下

struct stuData{

1:byte stuMemory,

2:i32 iLength,

}

service OptionalFun{

void SaveData(1: stuData user),

stuData GetData()

}

网上也给出一些相关案例,在这我具体解释一下,因为这块花费了我一些时间去查资料。结构体里的内容可以写成如下格式,

struct stuData{

1:required byte stuMemory,

2:required i32 iLength,

}

Required所代表的意义是必须添加此参数的赋值,如果在使用此结构体的时候此参数不复制是不正确的,把required换成optional则代表可选择填入此参数信息,如果不填入也可以。如果前面不加此标识符,则默认是optional。

Service是你所要产生的接口,在编译的时候thrift会自动产生相关接口,在你调用此接口时会自行发送或接受你想要的数据。(由于前期研究较为浅薄,是否有client端接口还未验证,如有需要请自行查阅资料。)

七、生成相应的库文件和头文件

创建目录,把demo.thrift文件拷贝到该目录下,并在命令行中输入

thrift -r --gen cpp demo.thrift

所圈出的是产生的新产生的文件,后边是产生文件夹中的内容,其中

OptionalFun_server.skeleton.cpp的内容是服务器程序,其中的内容可以按照自己需求更改。同时,我们拷贝一个Client.cpp到文件夹下修改,同时也更改OptionalFun_server.skeleton.cpp为OptionalFun_server.cpp,并进行内容上的修改。

把之前thrift产生的静态库和include文件拷贝到gen-cpp中,为了方便直接将include下的thrift文件夹中的内容全部拷贝到当前目录下,lib文件直接拷贝过来便可。

然后输入  make

再输入   ./CppServer

再输入  ./CppClient

OK,以上就是全部过程

Windows版本下使用Thrift详细步骤

建议使用vs 2010

1、准备相关的文件

将thrift-0.8.0.tar.gz和libevent-2.0.22-stable.tar.gz和boost解压到一个文件夹下。

2、编译boost

1) 从开始菜单启动vs2010下的x64 win64 cmd窗口

2) 到BOOST下执行boostrap.bat生成相应版本的bjam

3) 输入 bjam.exe --toolset=msvc-10.0 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization

4) 输入 b2 install  --toolset=msvc-10.0 --stagedir="C:\Boost\boost_vc_100" threading=multi debug release

(根据本机电脑版本不同选择不同的编译窗口)

编译好了把产生的lib和include拷贝到boost文件夹下。(编译好的文件在c盘boost目录下)

2、准备环境

进入\thrift-0.8.0\lib\cpp,VS2010打开Thrift.sln,有libthrift,libthriftnb两个工程。

两个工程的区别是,libthriftnb工程是非阻塞(non-blocking)模式的服务器,非阻塞模式需要依赖libevent库。

libthrift工程配置:

libthrift>属性->C/C++->常规->附加包含目录->\boost

libthrift>属性->库管理器->常规->附加库目录->\boost\lib

libthriftnb工程配置:

libthriftnb>属性->C/C++->常规->附加包含目录->

\boost

\libevent-2.0.21-stable

\libevent-2.0.21-stable\include

\libevent-2.0.21-stable\WIN32-Code

libthriftnb>属性->库管理器->常规->附加库目录->

\boost\lib

(根据名字不同选择不同自己写路径) 编译两个工程。

3、创建工程

用Visual Studio 2010新建空程序。

将gen-cpp中的文件和client客户端文件拷贝过来,目录结构如下

其中标红的是我自己写的程序,最初应该不产生。

4、配置项目属性

(由于windows版本只提供客户端版本所以不提供代码)

Sever工程Server>属性->C/C++->常规->附加包含目录->\boost\boost_1_51

Sever工程Server>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src

Sever工程Server>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src\thrift

Sever工程Server>属性->连接器->附加库目录->\boost\boost_1_51\lib

Sever工程Server>属性->连接器->附加库目录->\thrift-0.9.1\lib\cpp\Debug

附加库目录指向的是刚刚编译出的Debug目录(或者release目录)

类似的,Client工程也做这样的配置。

Client工程Client>属性->C/C++->常规->附加包含目录->\boost\boost_1_51

Client工程Client>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src

Client工程Client>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src\thrift

Client工程Client>属性->连接器->附加库目录->\boost\boost_1_51\lib

Client工程Client>属性->连接器->附加库目录->\thrift-0.9.1\lib\cpp\Debug

至此以上windows端和linux端就介绍完全了!需要编写代码请自己编写吧。

Windows版本下使用Thrift0.9.2详细步骤

由于thrift0.9.2用到了openssl库,所以thrift 0.8.0版本的教程不适用此版本,所以重写此版本的服务器和客户端方法。

由于opensll为开源库,不同的电脑环境编译结果可能不一样,所以在此给出opensll1.0.1版本的静态库,省去编译麻烦,同时给出了所需要的头文件和源文件。

Boost文件编译模式没有改变,遵从thrift0.8.0版本即可。

Libthriftnb的配置方法也没有改变,遵从上一版本即可。

Libthrift的配置如下:

附加包目录下增加 \openssl-1.0.1h\inc32此文件夹,如下图:

库链接增加 openssl_lib文件夹中的两个文件,如下图(由于文件所在位置不一样路径不同):

然后编译,则可正常通过,服务器和客户端所配环境和上一版本相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值