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

这样,就可以使用高版本的cmake和gcc了。也就是使用的开发环境,不影响机器上的运行gcc、cmake版本。

2.2 修改do_cmake.sh

注释掉原来的命令,如下:

#cmake -DBOOST_J=$(nproc) $ARGS "[email protected]" ..   

添加新的cmake命令参数:

cmake -DCMAKE_C_FLAGS="-O0 -g3 -gdwarf-4" -DCMAKE_CXX_FLAGS="-O0 -g3 -gdwarf-4" -DBOOST_J=$(nproc) $ARGS "[email protected]" ..    

解释以上参数的含义:

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 install编译安装源码

生成vstart脚本:

cd build
make vstart


参考资料:
https://blog.csdn.net/a1454927420/article/details/72412278
https://blog.csdn.net/ygtlovezf/article/details/81333956

原文地址:https://www.cnblogs.com/powerrailgun/p/12133107.html

时间: 2024-10-12 23:33:24

Ceph编译:L版本及其之后的版本的相关文章

Linux下快速静态编译Qt以及Qt动态/静态版本共存

Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-opensource-src的tar包,到网上一查,乖乖,大部分人编译这个包居然花费了12-13个小时!但是,根据我在Windows下静态编译Qt的经验,其实这之中很多东西都是可以不用编译的,最终我大约用了40分钟编译完成了全部内容.如果你直接使用官方的sdk安装,那么你就已经有了一个动态库,现在你又通过源

Linux下用Intel编译器编译安装NetCDF-Fortan库(4.2版本后)

本来这个问题真的没必要写的,可是真的困扰我太久%>_<%,决定还是记录一下. 首先,最权威清晰的安装文档还是官方的: Building the NetCDF-4.2 and later Fortran libraries (写此文时,最近版为4.2) 那这个文档最开始就告诉我们,自NetCDF库4.2版本以后,Fortran的库和C的库就要分开build啦!而且要装Fortran的库必须先装好C的库. 所以先装C的库咯:仍然官方文档: Getting and Building NetCDF-C

Eclipse4.7使用基础 查看编译与运行的JDK的版本

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) 首先 查看编译JDK的版本 查看运行JDK的版本   然后,czbk的视频教程中提到了一些有价值的信息,我将其总结如下 低版本编译,高版本运行是可以的. 高要爱护/兼容低 高版本编译,低版本运行不可以的.因为低不懂高的寂寞 编译的版本和运行的版本/位数都相同,都是比如1.8_64,这才最好. Java优秀,值得学习.Eclipse

编译安装HTTPD 2.4.9版本

编译安装HTTPD 2.4.9版本 ? ?服务脚本:/etc/rc.d/init.d/httpd ? ?脚本配置文件路径:/etc/sysconfig/httpd ? ?运行目录:/etc/httpd ? ?配置文件: ? ? ? ?主配置:/etc/httpd/conf/httpd.conf ? ? ? ?扩展配置:/etc/httpd/conf.d/*.conf ? ?监听的Socket: tcp的80, 443是https/tcp的监听端口 ? ?在内核中使用小于1023的端口的只有管理员

CCS5.5.0编译问题之” version of compiler版本不同”

编译警告: This project was created using a version of compiler that is not currently installed: 6.0.3 [C2000]. Another version of the compiler will be used during build: 6.2.0. Please install the compiler of the required version, or migrate the project t

rocketMQ_4.1.0 编译好可以直接运行的版本:

如果从gitub上下载源码需要maven编译比较麻烦,这里有现成的可以直接运行的:rocketMQ_4.1.0 编译好可以直接运行的版本:链接:https://pan.baidu.com/s/11MT5rUGd2LXcBzJj-Bs5Sg 密码:u20j 原文地址:http://blog.51cto.com/1038741/2103952

VS2015编译GEOS的debug和release版本

目前GEOS最新的3.7.1版本支持camke进行编译.经过尝试发现通过cmake生成的工程在vs2015下面编译的时候还是存在问题,而且在中文网上也没找到解决方案. 所以还是采用了nmake进行编译.解压出geos-3.7.1文件夹,双击运行其中的autogen.bat. 在目录中找到nmake.opt,这个文件控制着nmake编译的一些参数.记事本打开,找到如下片段: ##############################################################

配置文件编译问题:扫描包的问题 和 编译字符编码问题 和编译器版本1.5问题

配置文件编译问题:扫描包的问题 和 编译字符编码问题 和编译器版本1.5问题<build > <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes&

高版本api在低版本中的兼容

直接上例子,看如何避免crash. eg:根据给出路径,获取此路径所在分区的总空间大小. 文档说明:获取文件系统用量情况,在API level 9及其以上的系统,可直接调用File对象的相关方法,以下需自行计算 API level 9及其以上,调用 File.getTotalSpace() 即可, 但是在API level 8 以下系统File对象并不存在此方法 //如下 /** * Returns the total size in bytes of the partition contain