1. Code download
It can be downloaded directly from the Internet, http://www.apache.org/dyn/closer.cgi?path=/thrift/0.10.0/thrift-0.10.0.tar.gz
You can also use git to download git clone from github https://git-wip-us.apache.org/repos/asf/thrift.git
2. Environmental preparation:
The linux of the server is centos6.7, so only centos6 is listed here.
Building Apache Thrift on CentOS 6.5
Starting with a minimal installation, the following steps are required to build Apache Thrift on Centos 6.5. This example builds from source, using the current development master branch. These instructions should also work with Apache Thrift releases beginning with 0.9.2.
Update the System
sudo yum - y update
Install the Platform Development Tools
sudo yum -y groupinstall "Development Tools"
Upgrade autoconf/automake/bison
sudo yum install -y wget
Upgrade 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 ..
Upgrade 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 ..
Upgrade 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 ..
Add Optional C++ Language Library Dependencies
All languages require the Apache Thrift IDL Compiler and at this point everything needed to make the IDL Compiler is installed (if you only need the compiler you can skip to the Build step).
If you will be developing Apache Thrift clients/servers in C++ you will also need additional packages to support the C++ shared library build.
Install C++ Lib Dependencies
sudo yum -y install libevent-devel zlib-devel openssl-devel
Upgrade Boost >= 1.53
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
install java install ant
yum install ant
If you do not install ant, you will find that java is not supported during configure:
**Building Java Library ........ : no**
Build and Install the Apache Thrift IDL Compiler
git clone https://git-wip-us.apache.org/repos/asf/thrift.git cd thrift ./bootstrap.sh ./configure --with-lua=no make sudo make install
3. Solve the problems in compilation:
(1) The first problem that arises is:
Could not find event2/event_compat.h file
Solution: Download the latest version of libevent, and then install it
(2) The second question
src/thrift/server/TNonblockingServer.cpp: In member function ‘void apache::thrift::server::TNonblockingServer::TConnection::workSocket()‘:
src/thrift/server/TNonblockingServer.cpp:460:16: error: expected ‘)‘ before ‘PRIu32‘
"(%" PRIu32 " > %" PRIu64
Solution:
Changed the file: src/thrift/Thrift.h, and finally compiled successfully, the changes are as follows:
#ifdef HAVE_INTTYPES_H
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
#endif
(3) The third problem
is that TVirtualTransport is not defined in src/thrift/transport/THeaderTransport.h
Solution:
Change the TVirtualTransport that prompts an error in the header file to TVirtualTransport<THeaderTransport, TFramedTransport>, the problem with the template