mac os 安裝thrift

http://thrift.apache.org/docs/install/

一:安裝最新版(自動安裝)

最簡單的是用homebrew進行安裝

用brew安裝的thrift版本是0.9的,but,我們項目中得thrift版本是0.8的,所以果斷卸載掉。

 brew uninstall thrift。轉到下面第二種方法安裝thrift

二:手動安裝0.8.0

先安裝依賴。

http://www.jattcode.com/installing-autoconf-automake-libtool-on-mac-osx-mountain-lion/

  • 安裝BOOST

下載:http://www.boost.org/

命令:./bootstrap.sh,該命令用於生成bjam可執行文件,這個東西就是用來編譯boost庫

命令:sudo ./b2 threading=multi address-model=64 variant=release stage install 

  • 安裝 libevent

下載:http://libevent.org/

命令:./configure --prefix=/usr/local

命令:make

命令:sudo make install 


安裝 Apache Thrift

下載: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的時候會遇到如下問題,並按如下解決:

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

 故需顯式指定名字空間.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章