天天看點

Thrift官方安裝手冊(譯) 1 Thrift的環境要求 2 Centos 6.5 下安裝Thrift 3 Debian/Ubuntu 下安裝Thrift 4 OS X 下安裝Thrift 5 Windows下安裝Thrift THrift源代碼組織

apache的thrift的編譯器為支援可移植由c++語言編寫而成。但在安裝到某些系統中時要求有一定的環境要求。在下面的指南中選擇你要安裝的系統開始吧。

centos 6.5 install

debian/ubuntu install

os x install

windows install

一個相對posix相容* nix系統

windows下可用的cywin或者mingw

g++ 4.2

boost 1.53.0

生成編譯器時還需要支援lex和yacc的運作時庫

gnu的編譯工具:

autoconf 2.65

automake 1.9

libtool 1.5.24

pkg-config autoconf macros (pkg.m4)

lex and yacc (開發主要使用flex和bison)

libssl-dev

隻選擇編譯你需要的語言的庫就可以了

c++

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

進行thrift的最小化安裝,在centos 6.5 上下面的步驟必不可少. 我們給出使用目前開發的主分支來從源代碼編譯thrift的例子。這些介紹對thrift0.9.2 的 releases版本同樣有效。

所有語言都要用到apache的thrift 的idl編譯器,從這點看idl編譯器需要的一切都要安裝。 (如何你隻需要安裝編譯器可跳過此節).

如果你要使用c++開發thrift的用戶端/伺服器,你還需要編譯支援c++共享庫的可選包。

上述步驟将建構編譯器(thrift/compiler/cpp/thrift --version)以及任意語言庫的支援。當使用<code>make</code>來安裝時的路徑為:<code>/usr/local/bin/thrift</code>.你可以使用<code>./configure --enable-libs=no</code> 切換來編譯idl編譯器,而不編譯語言庫。使用<code>make check</code>可以運作測試用例.

在基于linux的debian/ubuntu等系統下安裝thrift需要安裝下面要求的工具和庫。

接下來可以安裝java的jdk.輸入java檢視可用的包清單,選擇并安裝并使用apt-get安裝。

debian穩定的使用者需要手動安裝最近automake版本:

其他包取決于你希望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

在基與os x的系統下安裝thrift需要安裝下面要求的工具和庫。

從boost.org上下載下傳boost庫并解壓,編譯

下載下傳libevent并解壓,編譯

下載下傳apache thrift 最新版本并解壓,編譯

thrift的編譯器為支援可移植,使用c++語言編寫,但是仍有一些環境要求:

cygwin or mingw

apache thrift 環境要求(參看第一節)

thrift的運作庫由多種語言寫成,這些語言有不同的語言接口。

如果是第一次編譯源碼,需要生成configure腳本。(是以無需全量下載下傳安裝包)。進入安裝包的根目錄,運作

一旦configure腳本生成,thrift就可以編譯了。運作

由于編譯報錯pthread_mutex_recursive_np未定義,需要設定環境變量cxxflags,用pthread_mutex_recursive替換pthread_mutex_recursive_np。(在cygwin 20100320, thrift r760184, 最新的 pthread上測試通過。)

可選部分: 由于以下錯誤你可以不用在根目錄編譯thrift的編譯器。在make前跳轉到編譯器的目錄

現在可用make來生成編譯器了(如果在根目錄make的話還會生成運作時庫)

一些語言包必須使用建構工具手動安裝(在撰寫本文時,适用于java,ruby,php).

每種語言的庫的詳細安裝步驟可以閱讀<code>lib/&lt;language&gt;/</code>目錄下readmi檔案。

另見mingw安裝時的可能可選的問題.

運作<code>./configure</code>可能出現以下錯誤:

要解決這個問題,需要找到系統中的pkg.m4 (由pkg-config 安裝包安裝)檔案并複制的<code>thrift/aclocal</code>目錄下。在thrift的根目錄時可以運作下面的指令

最後,在運作<code>./bootstrap.sh</code> 和<code>./configure</code>。

(注意,pkg.m4由pkg-config 工具生成.如果你的目錄<code>/usr/share/aclocal</code>下沒有pkg.m4檔案,說明你可能沒有安裝pkg-config.)

安裝perl庫附帶chmod的時候可能會出現錯誤。一個解決方法是如果不需要它們話安裝perl庫時避免安裝它們。

如果你不需要perl,可以運作<code>configure</code>時加入選項 --without-perl.

如果你需要perl,你最好在安裝完thrift後,用下面的内容替換<code>thrift/lib/perl/makefile</code>的内容後手動安裝。

使用g++連結已安裝的libthrift.a時可能會出現錯誤,thrift 類找不到虛函數表(vtables)和異常(exceptions).

解決方法是将丢失的類直接連結到編譯後的目标檔案。在makefile可以使用下面語句實作

然後使用$(lthrift) 而不是-lthrift連結。

當你是g++-3編譯器編譯你的thrift 的c++程式時,fork() 之後可能出現段錯誤。

這個問題在 cygwin 1.7.5-1之後的版本或者g++ 4.5.0之後已經修複.

安裝mingw (www.mingw.org)後,編譯thrift的編譯器和運作時庫(未測試)不再需要依賴cygwin.dll。你隻需要按照下面的步驟進行即可。

添加windows環境變量path

接着,打開檔案<code>compiler/cpp/makefile.am</code>,添加下面一行内容到<code>thrift_cxxflags</code>:

運作腳本 <code>bootstrap.sh</code>:

確定環境變量<code>$path</code>中包含java,如果沒有的話,可以運作

運作<code>configure</code>,使用cxxflags解決舊線程的定義問題

可選:如果隻生成編譯器的話,可以調整到編譯器所在目錄

運作 make:

另見 使用cygwin安裝可能出現的問題,包括關于 pthread_mutex_recursive_np的描述。

保證在makefile的cxxflags添加-lfl,或者嘗試添加-lc:/cygwin/libs

嘗試改變頭檔案的路徑,編輯<code>compiler/cpp/makefile</code>,查找<code>boost_cppflags</code>,

修改為

在makefile中給cxxdefs變量添加<code>-dmingw -mno-cygwin</code>

最後看看thrift的源代碼組織結構