1. 程式人生 > >Thrift0.8.0安裝常見問題

Thrift0.8.0安裝常見問題

專案要求thrift的版本為0.8.0,這是一個老版本,所以我們不能使用包管理器(例如brew)來進行安裝了。
我們必須採用原始碼安裝。
原始碼安裝需要配置、編譯、連結的過程,會有一些依賴條件,所以在編譯之前我們首先要解決依賴關係。
需要安裝的依賴如下:
安裝boost庫
(1).下載地址:http://www.boost.org/
(2). 先執行命令:./bootstrap.sh (該命令用於 )。 生成bjam可執行檔案,這個東西就是用來編譯boost庫
(3). 再執行命令:sudo ./b2 threading=multi address-model=64 variant=release stage install 進行安裝。
因為boost庫比較大,編譯的時間非常長,所以請大家耐心等待。
安裝libevent庫
(1).使用brew安裝libevent, 執行命令: brew install libevent 。
在此處遇到問題:brew Could not symlink, /usr/local/include is not writable
解決方法:  ,然後重新執行建立連結的命令 , sudo chown -R `whoami`:admin /usr/local/include
按照terminal中的提示retry : brew link [名稱]即可。
出錯原因: 安裝程式對於/usr/local/include資料夾沒有寫許可權,在安裝程式嘗試向該目錄建立檔案
連結時會出錯,所以我們需要手動賦予使用者對於該路徑的寫許可權。
原始碼安裝thrift
(1).原始碼下載地址: 注意下載的版本 0.8.0,  http://thrift.apache.org/
也可以嘗試 這個連結直接下載。 thrift-0.8.0.tar.gz
(2).解壓檔案,執行編譯命令:./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local
在這個過程中可能會出現一系列問題:
a. <openssl/err.h> 檔案沒有找到
問題原因:openssl庫安裝有問題,可能沒有安裝openssl,這個時候安裝即可,
如果已經安裝了openssl那麼錯誤原因是因為:僅僅在使用者目錄安裝了 openssl ,
沒有將相應的檔案連結新增到系統目錄中,導致其他程式碼檔案在飲用openssl中的
一些標頭檔案時,出現了找不到的錯誤
解決方法:
首先執行 :brew install openssl ,如果openssl包已安裝會提示,否則會進行安裝
然後執行 :brew link --force openssl, 建立連結。
b.
多個原始碼檔案報錯 # 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
c.
cpp 測試程式碼 test/Benchmark.cpp 編譯失敗, shared_ptr ambigous , 用 boost::shared_ptr 替換 shared_ptr,
解決方法:vim /Users/chenhailong/Documents/chl/mytools/thrift-0.8.0/lib/cpp/test/Benchmark.cpp
全域性替換shared_ptr為boost::shared_ptr。然後重新make install即可。
-------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------
到這,thrift安裝我所遇到的問題都已經解決掉了,執行thrift -version命令顯示出相應版本號為: 0.8.0
如果大家還遇到過其它的問題,歡迎新增。