thrift centos编译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wenzhou1219/article/details/88380464

业界两大RPC框架thrift(Facebook)和protobuf(Google)现在可是用的非常普遍,linux上编译thrift遇到不少坑,记下来供有需要的朋友参考。

编译

系统环境:

  • 操作系统为CentOS 6.5
  • g++版本4.4(要求必须g++版本 >= 4.2)

下载:

先说正常流程,基本上就是参考官网流程来:

  • 1.开发库全套
sudo yum -y groupinstall "Development Tools"
  • 2.几个编译工具和库
    • autoconf
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar xvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=/usr
make
sudo make install
cd ..
    • automake
wget http://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz
tar xvf automake-1.14.tar.gz
cd automake-1.14
./configure --prefix=/usr
make
sudo make install
cd ..
    • bison
wget http://ftp.gnu.org/gnu/bison/bison-2.5.1.tar.gz
tar xvf bison-2.5.1.tar.gz
cd bison-2.5.1
./configure --prefix=/usr
make
sudo make install
cd ..
    • flex
sudo yum -y install flex
    • c++ library
sudo yum -y install libevent-devel zlib-devel openssl-devel
    • Boost
wget http://sourceforge.net/projects/boost/files/boost/1.53.0/boost_1_53_0.tar.gz
tar xvf boost_1_53_0.tar.gz
cd boost_1_53_0
./bootstrap.sh
sudo ./b2 install
  • 3.thrift编译安装
git clone https://github.com/apache/thrift.git
cd thrift
./bootstrap.sh
./configure --with-lua=no
make
sudo make install

本机上如果对应库已经安装且版本比这高就不用安装了,这一套流程走下来,编译安装没问题,那就不用往下看了,如果有问题对照如下解决即可。

问题

  • 提示少库,yum安装对应库后再编译
  • ./src/thrift/server/TNonblockingServer.h:41:33: error: event2/event_compat.h: No such file or directory

这种情况是缺少的对应的库,libevent-devel只是安装了开发所需的头文件库而已,如下安装

wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar xvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr/local
make
make install
  • ‘apache::thrift::transport::THeaderTransport’ does not have any field named ‘TVirtualTransport’

这种情况是g++版本太低,不支持对应的模板语法,如下到文件./thrift/lib/cpp/src/thrift/transport/THeaderTransport.h,把THeaderTransport对应的两个构造函数模板参数补齐即可

  /// Use default buffer sizes.
  explicit THeaderTransport(const stdcxx::shared_ptr<TTransport>& transport)
    : TVirtualTransport<THeaderTransport, TFramedTransport>(transport),
...
  }

  THeaderTransport(const stdcxx::shared_ptr<TTransport> inTransport,
                   const stdcxx::shared_ptr<TTransport> outTransport)
    : TVirtualTransport<THeaderTransport, TFramedTransport>(inTransport),
...
  }

下载

CentOS 6.5 上已编译好thrift下载链接

原创,转载请注明来自

猜你喜欢

转载自blog.csdn.net/wenzhou1219/article/details/88380464