天天看點

TFS 安裝使用GCC4.4版本

淘寶的tfs在帽子5(rhel 5.* && centos 5.*)下面編譯不會出題,但是在6.*下面,就會有很多報錯,原因在于5.*與6.*二個版本的gcc不一樣,帽子5系列使用gcc版本是4.1.2,而新版本的6使用的4.4.6,後者對編譯的文法檢查更嚴格,使得很多代碼在帽子5系列上編譯沒有問題,而在帽子6系統下編譯通不過。

首先編譯安裝tblib(tb-common-utils),裡面含有tbsys和tbnet,tfs依賴這二個庫,這裡我安裝在和tfs同一個路徑。就幾個指令。

TFS 安裝使用GCC4.4版本

安裝完成後應該可以看到如下目錄

TFS 安裝使用GCC4.4版本

表明已安裝tblib成功,接下來進入正題安裝tfs,進入tfs目錄,執行如下指令,如圖

TFS 安裝使用GCC4.4版本

執行完上面的步驟後,就可以看configure,和安裝其它的開源軟體一樣。

TFS 安裝使用GCC4.4版本

執行make,出現第一個報錯,如圖

TFS 安裝使用GCC4.4版本

一大堆的類型轉換錯誤,檢視Makefile,發現如下

TFS 安裝使用GCC4.4版本

編譯添加-Werror,使用警告的錯誤直接報error,導緻編譯出錯。修改所有的Makefile,去掉-Werror,如圖

TFS 安裝使用GCC4.4版本

再次make,出現了第二個報錯,如圖:

TFS 安裝使用GCC4.4版本

仔細看會發現,gene_session_id定義的沒有比對到原型,原因在于session_util.h沒有加stdint.h的頭檔案,如果是低版本的gcc在編譯時不會出問題,高版本就會報錯,修改session_util.h,添加stdint.h頭檔案,如下:

TFS 安裝使用GCC4.4版本

繼續make,出現第三個報錯,如圖

TFS 安裝使用GCC4.4版本

原因一樣,高版本gcc文法檢測更嚴,修改meta_server_service.cpp,在1584行,代碼裡強制類型轉換一下,如圖,添加如下紅框部分

TFS 安裝使用GCC4.4版本

再次make,沒有問題了,完畢後make install一下,應該可以看到已經編譯安裝成功了。如圖

TFS 安裝使用GCC4.4版本

---------------------------------------------------------------------------------

以下是我在編譯安裝是出現的錯誤和使用的解決方案:

make

    報錯:

uuid/uuid.h;No such file or directory

解決辦法:

yum -y install libuuid-devel

本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/1582294,如需轉載請自行聯系原作者

繼續閱讀