我是64位UBUNTU,gcc 4.7,官方說是要4.1.2. 但不知道怎麼回事,我就硬是沒有在機子上裝成功GCC4.1.2,只好硬着頭皮再GCC 4.7上繼續了。
安裝libuuid-devel,zlib-devel,mysql-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