標籤:
http://thrift.apache.org/docs/install/
一:安裝最新版(自動安裝)
最簡單的是用homebrew進行安裝
用brew安裝的thrift版本是0.9的,but,我們項目中得thrift版本是0.8的,所以果斷卸載掉。
brew uninstall thrift。轉到下面第二種方法安裝thrift
二:手動安裝0.8.0
先安裝依賴。
下載:http://www.boost.org/
命令:./bootstrap.sh,該命令用於產生bjam可執行檔,這個東西就是用來編譯boost庫
命令:sudo ./b2 threading=multi address-model=64 variant=release stage install
下載:http://libevent.org/
命令:./configure --prefix=/usr/local
命令:make
命令:sudo make install
下載:http://thrift.apache.org/
編譯命令:./configure --prefix=/usr/local/ --with-boost=/usr/local/lib --with-libevent=/usr/local/lib --without-ruby --without-python --without-perl --without-php
有一些不相關的code genorater可以不要了,不然又得會報錯。。。
安裝命令:sudo make install
thrift -version 可以查看安裝是否成功和版本
thrift-0.8.0.tar.gz
安裝8的時候會遇到如下問題,並按如下解決:
以下摘自美團 Created by 曹繼光, last modified by 嚴鑫 on 十月 10, 2014
Osx 10.9 是比較新的系統, 從這個版本開始, 系統預設編譯器從GCC 改為 Clang(GCC -v 一下, 給的是clang 的提示).
Thrift 0.8 代碼相對又比較老, 在新的編譯器上遇到了下列一些問題.
問題1 :
多個源碼檔案報錯 # include <tr1/functional>, file not found, 改為 # include <boost/tr1/functional.hpp> 解決.
需要修改以下檔案:
- lib/cpp/src/concurrency/ThreadManager.h line:24
- lib/cpp/src/async/TAsyncChannel.h line:23
- lib/cpp/src/async/TAsyncChannel.cpp line:21
- lib/cpp/src/async/TAsyncProcessor.h line:23
- lib/cpp/src/async/TAsyncBufferProcessor.h line:23
原因: 在我實驗的環境下, 此標頭檔有尾碼名/usr/local/include/boost/ tr1/functional.hpp
問題2:
cpp 測試代碼 test/Benchmark.cpp 編譯失敗, shared_ptr ambigous , 用 boost::shared_ptr 替換 shared_ptr,
錯誤消失.
原因: Clang 支援 C++ 11, 其 標準庫內建 shared_ptr(std::shared_ptr, 參考 http://zh.cppreference.com/w/cpp/memory/shared_ptr)
故需顯式指定名字空間.
三:測試
下面編寫一個HelloWorld.thrift 來測試一下,內容如下:
namespace java com.meituan.mobile.hotel.sc.demo
service HelloWorldService {
string sayHello(1:string username)
}
執行:thrift -gen java HelloWorld.thrift 將在同級目錄下產生gen-java/com/meituan/mobile/hotel/sc/demo/HelloWorldService.java檔案。
mac os x10.10 安裝thrift