ubuntu下Thrift安装

thrift是一种常用rpc框架,工作中经常会用到,本文记录一下其安装过程。

目录

1.下载软件包

1.1thrift下载

1.2libevent下载

1.3boost下载

 2.安装(注意步骤)

2.1安装libevent

2.2安装boost 

2.3安装与Python2.7版本对应的python-dev

2.4安装Thrift

 3.测试安装


1.下载软件包

1.1thrift下载

Apache Thrift - Downloadhttps://thrift.apache.org/download

1.2libevent下载

https://libevent.org/https://libevent.org/

1.3boost下载

Boost C++ Librarieshttp://www.boost.org/%C2%A0

 2.安装(注意步骤)

前提条件:安装G++编译器,构建C/C++开发环境

2.1安装libevent

tar -zxvf libevent-2.1.12-stable.tar.gz 
cd libevent-2.1.12-stable/
sudo ./configure --prefix=/usr/local/libevent
sudo make
sudo make install

2.2安装boost 

tar -zxvf boost_1_81_0_rc1.tar.gz 
cd boost_1_81_0/
sudo ./bootstrap.sh --prefix=/usr/local/boost
sudo ./b2
sudo ./b2 install

2.3安装与Python2.7版本对应的python-dev

sudo apt-get install python2.7-dev

2.4安装Thrift

https://dlcdn.apache.org/thrift/0.18.1/thrift-0.18.1.tar.gz
tar -zxvf thrift-0.18.1.tar.gz
cd thrift-0.18.1
chmod +x configure
sudo ./configure --with-boost=/usr/local/boost --prefix=/usr/local/thrift
sudo make
sudo make install

查看thrift版本:

/usr/local/thrift/bin/thrift -version

 3.测试安装

以官网协议StressTest.thrift为例:

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

namespace cpp test.stress
namespace d thrift.test.stress
namespace go stress

service Service {

  void echoVoid(),
  i8 echoByte(1: i8 arg),
  i32 echoI32(1: i32 arg),
  i64 echoI64(1: i64 arg),
  string echoString(1: string arg),
  list<i8>  echoList(1: list<i8> arg),
  set<i8>  echoSet(1: set<i8> arg),
  map<i8, i8>  echoMap(1: map<i8, i8> arg),
}

//同步代码生成
/usr/local/thrift/bin/thrift -r --gen cpp StressTest.thrift 

//异步代码生成
/usr/local/thrift/bin/thrift --gen cpp:cob_style StressTest.thrift 

备注: 

//生成java代码

thrift -r --gen java student.thrift  

//生成python代码
thrift -r --gen py student.thrift    

client.cpp

#include <iostream>
#include <string>
#include <thrift/transport/TTransportUtils.h>
#include <thrift/transport/TSocket.h>
#include <thrift/protocol/TBinaryProtocol.h>
#include "Service.h"

using namespace  ::test::stress;
using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;

int main()
{
	std::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
	std::shared_ptr<TTransport> transport(new TFramedTransport(socket));
	std::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
	ServiceClient client(protocol);
	transport->open();
	std::cout << "client echoByte byte=" << client.echoByte('A') << std::endl;
	std::cout << "send_echoByte('B')" << std::endl;
	client.send_echoByte('B');
	std::cout << "send_echoByte('C')" << std::endl;
	client.send_echoByte('C');
	std::cout << "recv_echoByte()" << client.recv_echoByte() << std::endl;
	std::cout << "recv_echoByte()" << client.recv_echoByte() << std::endl;
	transport->close();
	return 0;
}

客户端编译:

g++ -std=c++11 -I./gen-cpp -I/usr/local/thrift/include  -I/usr/local/libevent/include -I/usr/local/libevent/include/event2 -I/usr/local/boost/include  gen-cpp/Service.cpp  client.cpp -o client -L /usr/local/thrift/lib  -lthrift  -L /usr/local/libevent/lib -levent -L /usr/local/boost/lib -lboost_json

代码目录结构如下:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值