TFS編譯

我是64位UBUNTU,gcc 4.7,官方說是要4.1.2. 但不知道怎麼回事,我就硬是沒有在機子上裝成功GCC4.1.2,只好硬着頭皮再GCC 4.7上繼續了。

安裝libuuid-develzlib-develmysql-devel三個開發包。

 

ubuntu 上 mysql-devel 庫的名字叫 libmysqld-dev,別弄錯了

sudo apt-get install libmysqld-dev

浪費了幾天的時間想安裝zlib-dev 原來是因爲UBUNTU下包名變了

sudo apt-get install zlib-dev 變爲 sudo apt-get install zlib1g-dev

安裝libuuid-devel,apt-get install e2fsprogs

安裝tb-common-utils

在/etc/profile中加入

TBLIB_ROOT=****

export TBLIB_ROOT

./configure --prefix /home/zhy/softeware/tfsi

抱readline錯誤

  • 解決方法,安裝apt-get install libreadline-dev

 

抱tcmalloc錯誤

configure: error: in `/home/zhy/softeware/tfs':
configure: error: tcmalloc link failed (--without-tcmalloc to disable)

解決方法:因爲我事64位的,查到說要裝其他東西

64位操作系統請先安裝libunwind庫,32位操作系統不要安裝。libunwind庫爲基於64位CPU和操作系統的程序提供了基本的堆棧輾轉開解功能,其中包括用於輸出堆棧跟蹤的API、用於以編程方式輾轉開解堆棧的API以及支持C++異常處理機制的API。

apt-get install libunwind8

apt-get install libunwind8-dev 我裝的時候用cache搜出來是帶8

安裝google-perftools的時候,幾次都沒成功,不知道裝那個,搜出來好幾個,於是我就用下面的全裝。

apt-get install libgoogle-perftools*

apt-get install google-perftools

 可用lsof -n |grep tcmalloc查看是否安裝成功

make 時候報錯 首先第一個錯誤就是各種類型轉換報錯。同時後面還跟了個 [-Werror=conversion]

猜測是GCC編譯時候警告錯誤,

解決方法:於是就在configure.ac和Makfile.am文件中把CFLAGS的werror選項去掉。

重新configure成功。

 

 make時候 uuid.h相關錯誤:

安裝uuid-dev失敗

注意在安裝uuid-dev的時候不同系統安裝的名稱不一樣,使用centeros的同學需要安裝yum install libuuid-devel,ubuntu的同學可以直接安裝apt-get install uuid-dev

 

同樣是make時候 報錯 session_util.cpp 和session_util.h中SessionUtil::gene_session_id函數不匹配,

查看session_util.h中本來定義的int32卻變成了int.

不知道爲什麼,猜測是GCC編譯的時候做了什麼事情,於是就把configure文件中的GCC選項cflags的內容全去掉。重新configure,後來居然報錯:在session_util.h找不到變量int32的定義,但爲什麼session_util.cpp又能成功呢?

解決方法:在session_util.h中(加入 #include<tbsys.h> #include<stdlib.h>。

 

make 錯誤 'uint64_t* {aka long long unsigned int*}' to 'uLongf* {

找到對應文件,加強制類型轉換;我報錯文件是 src/new_client/tfs_meta_helper.cpp 281行

make錯誤atomic_inc參數類型錯誤,uint32_t uint64_t.

vim src/nameserver/client_request_server.cpp 的725,722行,我還是用的強制轉換

ns_define.cpp:196:70: 錯誤: 對‘atomic_inc(uint64_t*)’的調用沒有匹配的函數

還是強制轉換

還是make時候  報錯 /usr/bin/ld: cannot find -ljemalloc

解決方法:安裝apt-get install libjemalloc-dev

還是make怎麼這麼多錯誤,

undefined reference to `uuid_generate‘  

undefined reference to `uuid_unparse'

 

  •  undefined reference to `uncompress'
  • undefined reference to `uuid_generate'
  •  undefined reference to `uuid_unparse'

到 src/tools/nameserver中修改Makefile 

267行 LIBS = -lmysqlclient -lrt -lpthread -lm -ldl -lc  加   -lz -luuid

277行 MYSQL_LDFLAGS = -L/usr/lib/i386-linux-gnu -lmysqlclient_r -lpthread -lz -lm -lrt -ldl  加  -luuid

提示沒有curses.h文件

安裝sudo apt-get install  libncurses5-dev


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