淘寶的tfs在帽子5(rhel 5.* && centos 5.*)下面編譯不會出題,可是在6.*下面,就會有不少報錯,緣由在於5.*與6.*二個版本的gcc不同,帽子5系列使用gcc版本是4.1.2,而新版本的6使用的4.4.6,後者對編譯的語法檢查更嚴格,使得不少代碼在帽子5系列上編譯沒有問題,而在帽子6系統下編譯通不過。centos
下面我就把在帽子6.3上編譯淘寶tfs過程以及處理過程寫出來,但願對你們有所幫助。首先checkout代碼,如圖:session
經淘寶TFS開發者張友東指點,上述svn checkout直接下載的tb-common-utils最新版,這個如今直接寫最新版本有問題的,必須checkout r18及如下的版本:svn
svn co -r 18 http://code.taobao.org/svn/tb-common-utils/trunk tb-common-utilsspa
首先編譯安裝tblib(tb-common-utils),裏面含有tbsys和tbnet,tfs依賴這二個庫,這裏我安裝在和tfs同一個路徑。就幾個命令。code
安裝完成後應該能夠看到以下目錄server
代表已安裝tblib成功,接下來進入正題安裝tfs,進入tfs目錄,執行以下命令,如圖開發
執行完上面的步驟後,就能夠看configure,和安裝其它的開源軟件同樣。原型
執行make,出現第一個報錯,如圖開源軟件
一大堆的類型轉換錯誤,查看Makefile,發現以下io
編譯添加-Werror,使用警告的錯誤直接報error,致使編譯出錯。修改全部的Makefile,去掉-Werror,如圖
再次make,出現了第二個報錯,如圖:
仔細看會發現,gene_session_id定義的沒有匹配到原型,緣由在於session_util.h沒有加stdint.h的頭文件,若是是低版本的gcc在編譯時不會出問題,高版本就會報錯,修改session_util.h,添加stdint.h頭文件,以下:
繼續make,出現第三個報錯,如圖
緣由同樣,高版本gcc語法檢測更嚴,修改meta_server_service.cpp,在1584行,代碼裏強制類型轉換一下,如圖,添加以下紅框部分
再次make,沒有問題了,完畢後make install一下,應該能夠看到已經編譯安裝成功了。如圖