Thrift安装手册

本篇是Thrift官网安装文档的翻译,原地址点击这里。Thrift之前是不支持Windows的。但是似乎0.9版本以后已经支持Window了。介绍了Thrift安装的环境要求以及在centos,Debian/Ubuntu,OS X和Windows下的安装过程。并提出了一些安装过程中可能遇到的问题和解决办法。适用于thrift0.9版本。

1 Thrift的环境要求

Apache的Thrift的编译器为支持可移植由C++语言编写而成。但在安装到某些系统中时要求有一定的环境要求。在下面的指南中选择你要安装的系统开始吧。

  • Centos 6.5 Install
  • Debian/Ubuntu install
  • OS X Install
  • Windows Install

1.1 基本环境要求

  • 一个相对posix兼容* NIX系统
  • Windows下可用的Cywin或者MinGW
  • g++ 4.2
  • boost 1.53.0
  • 生成编译器时还需要支持lex和yacc的运行时库

1.2 编译源码的环境要求

  • GNU的编译工具:

    • autoconf 2.65
    • automake 1.9
    • libtool 1.5.24
  • pkg-config autoconf macros (pkg.m4)
  • lex and yacc (开发主要使用flex和bison)
  • libssl-dev

1.3 语言要求

只选择编译你需要的语言的库就可以了

  • C++

    • Boost 1.53.0
    • libevent (可选,编译无阻塞服务器时使用)
    • zlib (可选)
  • Java
    • Java 1.7
    • Apache Ant
  • C#: Mono 1.2.4 (可使用 pkg-config 检测) or Visual Studio 2005+
  • Python 2.6 (包括扩展模块的头文件)
  • PHP 5.0 (包括扩展模块的头文件)
  • Ruby 1.8
    • bundler gem
  • Erlang R12 (可以使用R11,但是不推荐)
  • Perl 5
    • Bit::Vector
    • Class::Accessor

2 Centos 6.5 下安装Thrift

进行Thrift的最小化安装,在Centos 6.5 上下面的步骤必不可少. 我们给出使用当前开发的主分支来从源代码编译Thrift的例子。这些介绍对Thrift0.9.2 的 releases版本同样有效。

更新系统

sudo yum -y update

安装平台开发工具

sudo yum -y groupinstall "Development Tools"

升级autoconf/automake/bison

sudo yum install -y wget

升级 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 ..

添加添加可选的c++语言库依赖库

所有语言都要用到Apache的Thrift 的IDL编译器,从这点看IDL编译器需要的一切都要安装。 (如何你只需要安装编译器可跳过此节).

如果你要使用C++开发Thrift的客户端/服务器,你还需要编译支持C++共享库的可选包。

安装C++依赖库

sudo yum -y install libevent-devel zlib-devel openssl-devel

升级 Boost

wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz
tar xvf boost_1_55_0.tar.gz
cd boost_1_55_0
./bootstrap.sh
sudo ./b2 install

编译Thrift的IDL编译器

git clone https://git-wip-us.apache.org/repos/asf/thrift.git
cd thrift
./bootstrap.sh
./configure --with-lua=no
make
sudo make install

上述步骤将构建编译器(thrift/compiler/cpp/thrift --version)以及任意语言库的支持。当使用make来安装时的路径为:/usr/local/bin/thrift.你可以使用./configure
--enable-libs=no
切换来编译IDL编译器,而不编译语言库。使用make check可以运行测试用例.

3 Debian/Ubuntu 下安装Thrift

在基于Linux的Debian/Ubuntu等系统下安装Thrift需要安装下面要求的工具和库。

sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

接下来可以安装Java的JDK.输入java查看可用的包列表,选择并安装并使用apt-get安装。

Debian稳定的用户需要手动安装最近automake版本:

wget http://ftp.debian.org/debian/pool/main/a/automake-1.14/automake_1.14.1-3_all.deb
sudo dpkg -i automake_1.14.1-3_all.deb

可选包

其他包取决于你希望THrift支持什么语言.

  • Ruby

    • ruby-full ruby-dev ruby-rspec rake rubygems libdaemons-ruby libgemplugin-ruby mongrel
  • Python
    • python-all python-all-dev python-all-dbg
  • Perl
    • libbit-vector-perl libclass-accessor-class-perl
  • Php, install
    • php5-dev php5-cli phpunit
  • C_glib
    • libglib2.0-dev
  • Erlang
    • erlang-base erlang-eunit erlang-dev
  • Csharp
    • mono-gmcs mono-devel libmono-system-web2.0-cil nunit nunit-console
  • Haskell
    • ghc6 cabal-install libghc6-binary-dev libghc6-network-dev libghc6-http-dev
  • Thrift Compiler for Windows
    • mingw32 mingw32-binutils mingw32-runtime nsis

4 OS X 下安装Thrift

在基与OS X的系统下安装Thrift需要安装下面要求的工具和库。

安装Boost

从boost.org上下载boost库并解压,编译

./bootstrap.sh
sudo ./b2 threading=multi address-model=64 variant=release stage install

安装libevent

下载libevent并解压,编译

./configure --prefix=/usr/local 
make
sudo make install

安装 Apache Thrift

下载Apache Thrift 最新版本并解压,编译

./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local

5 Windows下安装Thrift

我们已经语言生成了一个windows下的thrift编译器,点击这里下载

5.1 Windows下源码安装

win32的基本要求

Thrift的编译器为支持可移植,使用C++语言编写,但是仍有一些环境要求:

  • Cygwin or MinGW
  • Apache Thrift 环境要求(参看第一节)

Thrift的运行库由多种语言写成,这些语言有不同的语言接口。

源码安装

如果是第一次编译源码,需要生成configure脚本。(因此无需全量下载安装包)。进入安装包的根目录,运行

./bootstrap.sh

一旦configure脚本生成,Thrift就可以编译了。运行

export CXXFLAGS="-D PTHREAD_MUTEX_RECURSIVE_NP=PTHREAD_MUTEX_RECURSIVE"
./configure

由于编译报错PTHREAD_MUTEX_RECURSIVE_NP未定义,需要设置环境变量CXXFLAGS,用PTHREAD_MUTEX_RECURSIVE替换PTHREAD_MUTEX_RECURSIVE_NP。(在cygwin 20100320, Thrift r760184, 最新的 pthread上测试通过。)

可选部分: 由于以下错误你可以不用在根目录编译Thrift的编译器。在make前跳转到编译器的目录

cd compiler/cpp

现在可用make来生成编译器了(如果在根目录make的话还会生成运行时库)

make
make install

一些语言包必须使用构建工具手动安装(在撰写本文时,适用于Java,Ruby,PHP).

每种语言的库的详细安装步骤可以阅读lib/<language>/目录下READMI文件。

Cygwin安装时的可能可选的问题

另见MinGW安装时的可能可选的问题.

语言错误(Syntax error in ./configure)

运行./configure可能出现以下错误:

./configure: line 21183: syntax error near unexpected token `MONO,‘
./configure: line 21183: `  PKG_CHECK_MODULES(MONO, mono >= 1.2.6, have_mono=yes, have_mono=no)‘

要解决这个问题,需要找到系统中的pkg.m4 (由pkg-config 安装包安装)文件并复制的thrift/aclocal目录下。在Thrift的根目录时可以运行下面的命令

cp /usr/share/aclocal/pkg.m4 aclocal

最后,在运行./bootstrap.sh

./configure
。 (注意,pkg.m4由pkg-config 工具生成.如果你的目录/usr/share/aclocal下没有pkg.m4文件,说明你可能没有安装pkg-config.)

安装perl的运行时库

安装Perl库附带chmod的时候可能会出现错误。一个解决方法是如果不需要它们话安装perl库时避免安装它们。

如果你不需要Perl,可以运行configure时加入选项 --without-perl.

如果你需要Perl,你最好在安装完Thrift后,用下面的内容替换thrift/lib/perl/Makefile的内容后手动安装。

TODO

安装C++运行库时的连接

使用g++链接已安装的libthrift.a时可能会出现错误,Thrift 类找不到虚函数表(vtables)和异常(exceptions).

解决方法是将丢失的类直接链接到编译后的目标文件。在MakeFile可以使用下面语句实现

THRIFT_O=<path to>/thrift/lib/cpp
LTHRIFT=$(THRIFT_O)/Thrift.o $(THRIFT_O)/TSocket.o $(THRIFT_O)/TBinaryProtocol.o $(THRIFT_O)/TBufferTransports.o

然后使用$(LTHRIFT) 而不是-lthrift链接。

TODO - diagnose issue further

使用 cygwin 1.7.5-1, g++-4.3.4, fork() and throw 时出现C++运行时段错误

当你是g++-3编译器编译你的Thrift 的C++程序时,fork() 之后可能出现段错误。

这个问题在 Cygwin的邮件列表已经有描述 http://cygwin.com/ml/cygwin/2010-05/msg00203.html.

这个问题在 Cygwin 1.7.5-1之后的版本或者g++ 4.5.0之后已经修复.

5.2 源码安装 (不依赖Cygwin)

安装MinGW (www.mingw.org)后,编译Thrift的编译器和运行时库(未测试)不再需要依赖cygwin.dll。你只需要按照下面的步骤进行即可。

添加Windows环境变量PATH

C:\MINGW\BIN

接着,打开文件compiler/cpp/Makefile.am,添加下面一行内容到thrift_CXXFLAGS:

-DMINGW -mno-cygwin -lfl

运行脚本
bootstrap.sh
:

./bootstrap.sh

确保环境变量$PATH中包含java,如果没有的话,可以运行

export PATH=$PATH:"/cygdrive/c/program files/java/jre1.6.0_05/bin"

运行configure,使用CXXFLAGS解决旧线程的定义问题

export CXXFLAGS="-D PTHREAD_MUTEX_RECURSIVE_NP=PTHREAD_MUTEX_RECURSIVE"
./configure

可选:如果只生成编译器的话,可以调整到编译器所在目录

cd compiler/cpp

运行 make:

mingw32-make.exe

使用MinGW安装可能出现的问题

另见 使用Cygwin安装可能出现的问题,包括关于 PTHREAD_MUTEX_RECURSIVE_NP的描述。

yywrap 未找到

保证在Makefile的cxxflags添加-lfl,或者尝试添加-Lc:/cygwin/libs

boost 未找到

尝试改变头文件的路径,编辑compiler/cpp/Makefile,查找BOOST_CPPFLAGS,
修改为

BOOST_CPPFLAGS = -Ic:/cygwin/usr/include/boost-1_33_1

realpath 未找到

在Makefile中给CXXDEFS变量添加-DMINGW -mno-cygwin

THrift源代码组织

最后看看Thrift的源代码组织结构

--/thrift
----/compiler  #编译器源码
----/doc       #文件
----/lib       #框架库源码
----/test      #测试用例目录
----/tutorial  #示例指南目录
时间: 2024-11-06 11:49:44

Thrift安装手册的相关文章

Thrift官方安装手册(译)

本篇是Thrift官网安装文档的翻译,原地址点击这里.Thrift之前是不支持Windows的.但是似乎0.9版本以后已经支持Window了.介绍了Thrift安装的环境要求以及在centos,Debian/Ubuntu,OS X和Windows下的安装过程.并提出了一些安装过程中可能遇到的问题和解决办法.适用于thrift0.9版本. 1 Thrift的环境要求 Apache的Thrift的编译器为支持可移植由C++语言编写而成.但在安装到某些系统中时要求有一定的环境要求.在下面的指南中选择你

Nginx安装手册以及图片服务器部署

1.      安装gcc yum install gcc 2.      安装pcre,pcre-devel 在zhoulh目录下建立source build目录 mkdir source build 进入build目录 创建pcre目录 cd pcre wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.zip pcre的版本随着时间可能会变动,可以进入 ftp://ftp.csx.cam.ac.uk/pu

为 Joomla 而生的 Kunena 论坛安装手册

查看并下载最新版本Kunena论坛,或直接下载Kunena1.7.2.如果你打算在Joomla网站中安装一个论坛,可以考虑一下Kunena论坛组件,一个为Joomla而生的免费的开源论坛组件. 安装:使用Joomla的扩展管理,浏览到下载下来的Kunena论坛组件,上传并安装,看到安装界面,点击“安装Kunena 1.7.2”,稍等一会儿,一切都OK以后完成安装. 创建菜单:使用Joomla的菜单管理,创建一个Kunena论坛“入口页面”类型的菜单项,用户可以通过这个菜单项打开查看Kunena论

Nginx安装手册

前提是搭建yum安装环境,见前面的教程资料 Nginx安装手册1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境.? gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++ ? PCRE PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库.nginx的http

Oracle 11g R2安装手册(图文教程)For Windows

1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_database_1of2.zip http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_database_2of2.zip 2.解压两个

zabbix2.2.2完美安装手册

安装环境:centos6.6 64bit 第一章 Zabbix简介 Zabbix是一个基于Web界面提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. 基本功能 数据采集方式:zabbix agent,agent(active),SNMP,SSH等 数据存储方式:RDBMS,如MySQL,Pgsql等 数据展示方式:php,web,gui 报警功能:支持报警升级 第二章 Zab

funtoo 安装手册阅读 (博客第 100 篇文章纪念)

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;}

Linux系统VMware-Tools安装手册

VMware-Tools安装手册 一.安装概述: 在Linux操作系统中安装VMware-Tools是一个为后续的操作提供辅助性的帮助,通过成功挂载安装这个以后,用户就可以直接从Windows桌面拖拽到Linux系统中去,这样也比较节省时间.同时安装好以后,用户就可以直接设置好Windows与Linux操作系统的"文件共享",一个文件夹里面的内容供两个操作系统使用. 本次安装是作者本人摸索安装使用的,仅供初学者参考,如有不妥的地方可以留言.谢谢! 二.安装步骤: 1.启动好自己安装好的

Thrift安装介绍

一.简介 1.语言库要求 因为thrift支持多语言.所以编译thrift源代码的过程中,会用到该语言的一些类库.如c++的boost.java的jdk等. 那么,在安装thrift过程中,须要对各种语言安装哪些类库和工具呢,官方对此有具体的介绍: 所需语言库和工具 C++ :Boost 1.33.1+ (必选),libevent (可选,用来创建非堵塞server) ,zlib (可选) Java :Java 1.5+ (必选),Apache Ant (必选),Apache Ivy(必选),A