1. 程式人生 > 其它 >Ceph編譯:L版本及其之後的版本

Ceph編譯:L版本及其之後的版本

Ceph編譯:L版本及其之後的版本。

1. 編譯前準備

下載程式碼庫

git clone git://github.com/ceph/ceph.git all

或者

git clone --recursive https://github.com/ceph/ceph.git

假如想看v13.2.2的程式碼
只clone一個分支的:

git clone -b v10.2.5 --single-branch   git://github.com/ceph/ceph.git single

如果想看v13.2.2分支最後提交的程式碼:

git clone -b v10.2.5 --single-branch --depth 1  git://github.com/ceph/ceph.git singledep1

使用install-deps.sh解決編譯過程中的依賴。首先要解決install-deps執行個安裝依賴包很慢的問題:
提前準備好eple:

yum install http://mirrors.aliyun.com/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
rm -rf /etc/yum.repos.d/epel*

裝完了刪除,這個是為了繞過包驗證

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

刪除慢速的 aliyuncs:

sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo

install-deps.sh第72行的需要修改需要修改成aliyun的:

sed -i 's/https:\/\/dl.fedoraproject.org\/pub\//https:\/\/mirrors.aliyun.com\//g' install-deps.sh

同時還要將

$SUDO yum install --nogpgcheck -y epel-release

註釋掉,否則還是會安裝fedoraproject的epel。

2. 開始編譯

2.1

社群已經考慮到Centos下的gcc、cmake版本比較低,不支援C++17,因此在install-deps.sh中處理:

 yum install centos-release-scl  
 yum install devtoolset-7
 scl enable devtoolset-7 bash

也可以選擇安裝devtoolset-8
這樣,就可以使用高版本的cmake和gcc了。也就是使用的開發環境,不影響機器上的執行gcc、cmake版本。

2.2 修改do_cmake.sh

註釋掉原來的命令,如下:

#cmake -DBOOST_J=$(nproc) $ARGS "$@" ..   

新增新的cmake命令引數:

cmake -DCMAKE_C_FLAGS="-O0 -g3 -gdwarf-4" -DCMAKE_CXX_FLAGS="-O0 -g3 -gdwarf-4" -DBOOST_J=$(nproc) $ARGS "$@" ..    

解釋以上引數的含義:

CMAKE_C_FLAGS=“-O0 -g3 -gdwarf-4” : c 語言編譯配置

CMAKE_CXX_FLAGS=“-O0 -g3 -gdwarf-4” :c++ 編譯配置

-O0 : 關閉編譯器的優化,如果沒有,使用GDB追蹤程式時,大多數變數被優化,無法顯示, 生產環境必須關掉

-g3 : 意味著會產生大量的除錯資訊

-gdwarf-4 : dwarf 是一種除錯格式,dwarf-4 版本為4

進入ceph原始碼的目錄執行

bash do_cmake.sh

這個步驟會建立一個叫build的目錄。

進入到build目錄

cd build

執行cmake . -LH 檢視下ceph有哪些編譯選項,根據自己的需要來選擇

執行

cmake .. -DWITH_LTTNG=OFF -DWITH_RDMA=OFF -DWITH_FUSE=OFF -DWITH_DPDK=OFF -DCMAKE_INSTALL_PREFIX=/usr 

執行make –j8 編譯原始碼

make -j 8

執行make install 編譯安裝原始碼

sudo make install

生成vstart指令碼:

cd build 
make vstart

參考資料:

1.Ceph編譯:L版本及其之後的版本

https://blog.csdn.net/a1454927420/article/details/72412278 https://blog.csdn.net/ygtlovezf/article/details/81333956