一、Thrift的环境要求
1、Apache Thrift的编译器是用C++编写的,设计为可移植的,但是在使用之前必须安装一些系统要求。请在下面选择您的操作系统,以获取有关设置系统以开始使用的指南
- Centos 6.5 Install
- Debian/Ubuntu install
- OS X Install
- Windows Install
2、基本要求
- 一个相对POSIX兼容的* NIX系统
- 可以在Windows上使用Cygwin或MinGW(但有更好的选项,见下文)
- g++4.2(thrift编译器插件支持需要4.8或更高版本)
- boost 1.53.0
- 编译器可能需要lex和yacc的运行时库。
3、从源构建的要求
- GNU构建工具:
- autoconf 2.65
- automake 1.13
- libtool 1.5.24
- pkg-config autoconf macros (pkg.m4)
- lex和yacc(主要用flex和bison开发)
- libssl-dev
4、在Windows上从源构建编译器的要求
- Visual Studio C ++
- Flex和Bison(e.g. the WinFlexBison package)
5、语言要求
只有在您选择为给定语言构建库时,才需要这些
- C++
- Boost 1.53.0
- libevent (optional, to build the nonblocking server)
- zlib (optional)
- Java
- Java 1.7
- Apache Ant
- C#: Mono 1.2.4 (and pkg-config to detect it) or Visual Studio 2005+
- Python 2.6 (including header files for extension modules)
- PHP 5.0 (optionally including header files for extension modules)
- Ruby 1.8
- bundler gem
- Erlang R12 (R11 works but not recommended)
- Perl 5
- Bit::Vector
- Class::Accessor
- Haxe 3.1.3
- Go 1.4
- Delphi 2010
二、为Java构建库
安装JDK和Apache ant
Apache Ant版本:1.9.x版本在运行时需要Java1.5到Java1.7,而1.10.x在运行时需要Java1.8。
http://mirrors.shu.edu.cn/apache//ant/binaries/apache-ant-1.9.12-bin.tar.gz
http://mirrors.shu.edu.cn/apache//ant/binaries/apache-ant-1.10.4-bin.tar.xz
以jdk1.7和ant1.9为例
1、解压
[root@node1 ~]# tar -xf jdk-7u80-linux-x64.tar.gz
[root@node1 ~]# tar xf apache-ant-1.9.12-bin.tar.gz
2、配置环境变量
[root@node1 ~]# vim /etc/profile.d/java_version.sh
# java
export JAVA_HOME=/opt/jdk1.7.0_80
export PATH=${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin
export CLESSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib
[root@node1 ~]# vim /etc/profile.d/ant_version.sh
# ant
export ANT_HOME=/opt/apache-ant-1.9.12
export PATH=${PATH}:${ANT_HOME}/bin
[root@node1 ~]# source /etc/profile # 加载一下环境变量
3、验证
[root@node1 ~]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@node1 ~]#
[root@node1 ~]# ant
Buildfile: build.xml does not exist!
Build failed
[root@node1 ~]# ant -version
Apache Ant(TM) version 1.9.12 compiled on June 19 2018
三、在CentOS 6.5上构建Apache Thrift
CentOS7.*一般yum安装就可以。
从最小安装开始,在Centos 6.5上构建Apache Thrift需要以下步骤。此示例使用当前开发主分支从源构建。这些说明也适用于从0.9.2开始的Apache Thrift版本。
1、更新系统(暂不操作)
sudo yum -y update
2、安装平台开发工具
sudo yum -y groupinstall "Development Tools"
3、升级autoconf
sudo yum install -y wget
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 ..
4、升级的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 ..
5、升级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 ..
6、添加可选的C ++语言库依赖项
所有语言都需要Apache Thrift IDL编译器,此时安装了IDL编译器所需的一切(如果您只需要编译器,则可以跳到Build步骤)。
如果您将使用C ++开发Apache Thrift客户端/服务器,您还需要其他软件包来支持C ++共享库构建。
安装C ++ Lib依赖项
sudo yum -y install libevent-devel zlib-devel openssl-devel
7、升级Boost >= 1.53
yum install bzip2 bzip2-devel python python-devel -y # 依赖
#apt-get install libbz2-dev # Ubuntu依赖
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
8、构建并安装Apache Thrift IDL编译器
Centos6依赖
# centos6需把libevent-devel升级到2.0.21及以上(源码)
# http://libevent.org/
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar xf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr
make
make install
Centos7依赖
yum install libevent libevent-devel -y
源码安装Thrift
[root@node1 thrift-0.11.0]# yum install libtool pkgconfig -y
#http://archive.apache.org/dist/thrift/ # 下载路径
[root@node1 thrift-0.11.0]# wget http://archive.apache.org/dist/thrift/0.11.0/thrift-0.11.0.tar.gz
[root@node1 thrift-0.11.0]# tar xf thrift-0.11.0.tar.gz
[root@node1 thrift-0.11.0]# cd thrift-0.11.0
[root@node1 thrift-0.11.0]# ./bootstrap.sh
configure这一步结束会在terminal输出对不同语言的支持信息,检查一下是否满足自己要求,不满足的话请安装对应语言。
[root@node1 thrift-0.11.0]# ./configure --with-lua=no # 禁用lua语言,查看更多参数:./configure --help,
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 ........ : yes
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 ......... : no
Building Ruby Library ........ : no
Building Rust Library ........ : no
C++ Library:
C++ compiler .............. : g++
Build TZlibTransport ...... : yes
Build TNonblockingServer .. : yes
Build TQTcpServer (Qt4) ... : no
Build TQTcpServer (Qt5) ... : no
C++ compiler version ...... : g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
Java Library:
Using ant ................. : /root/apache-ant-1.9.12/bin/ant
Using java ................ : java
Using javac ............... : javac
Using ant version ......... : Apache Ant(TM) version 1.9.12 compiled on June 19 2018
Using java version ........ : java version "1.7.0_80"
Python Library:
Using Python .............. : /usr/bin/python
Using Python version ...... : Python 2.6.6
If something is missing that you think should be present,
please skim the output of configure to find the missing
component. Details are present in config.log.
[root@node1 thrift-0.11.0]# make
./src/thrift/protocol/TProtocolTypes.h:30: 警告:枚举表以逗号结尾
In file included from src/thrift/transport/THeaderTransport.cpp:20:
./src/thrift/transport/THeaderTransport.h:50: 警告:枚举表以逗号结尾
./src/thrift/transport/THeaderTransport.h:169: 警告:枚举表以逗号结尾
./src/thrift/transport/THeaderTransport.h: In constructor ‘apache::thrift::transport::THeaderTransport::THeaderTransport(const boost::shared_ptr&)’:
./src/thrift/transport/THeaderTransport.h:79: 错误:类‘apache::thrift::transport::THeaderTransport’没有名为‘TVirtualTransport’的字段
./src/thrift/transport/THeaderTransport.h: In constructor ‘apache::thrift::transport::THeaderTransport::THeaderTransport(boost::shared_ptr, boost::shared_ptr)’:
./src/thrift/transport/THeaderTransport.h:93: 错误:类‘apache::thrift::transport::THeaderTransport’没有名为‘TVirtualTransport’的字段
At global scope:
cc1plus: 警告:无法识别的命令行选项“-Wno-c++11-long-long”
make[4]: *** [src/thrift/transport/libthriftz_la-THeaderTransport.lo] 错误 1
make[4]: Leaving directory `/root/thrift-0.11.0/lib/cpp'
make[3]: *** [all-recursive] 错误 1
make[3]: Leaving directory `/root/thrift-0.11.0/lib/cpp'
make[2]: *** [all-recursive] 错误 1
make[2]: Leaving directory `/root/thrift-0.11.0/lib'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/root/thrift-0.11.0'
make: *** [all] 错误 2
# 当make报错时,如果是C++的错,且不使用C++,可以把C++关掉:
[root@node1 thrift-0.11.0]# ./configure --with-lua=no --with-cpp=no
[root@node1 thrift-0.11.0]# make
[root@node1 thrift-0.11.0]# sudo make install
验证
[root@node1 thrift-0.11.0]# thrift -version
Thrift version 0.11.0
这将构建编译器 (thrift/compiler/cpp/thrift --version) 和任何支持的语言库。make install步骤在路径上安装编译器:/usr/local/bin/thrift您可以使用./configure --enable-libs=no开关仅在没有lib构建的情况下构建Apache Thrift IDL编译器。要运行测试,请使用“make check”。
此片段由Apache Thrift的源代码树文档生成:doc/install/centos.md