daos源码编译

1. 前言

本文详细介绍如何在almalinux8.9上编译daos.2.0.0源码。系统环境如下:

bash 复制代码
daos:           2.0.0
linux os:       almalinux 8.9
linux kernel:   4.18.0-513.5.1.el8_9.x86_64

之所以选择2.0.0版本,是因为daos从2.0.0开始是一个全新的架构设计,与1.x版本是不兼容的。其次为了方便研究daos源码,当然是版本越早,功能越少,代码逻辑更清晰。

2. yum源配置

2.1. 配置daos yum源

bash 复制代码
[daos-2.0.0]
name=DAOS v2.0.0 Packages Packages
baseurl=https://packages.daos.io/v2.0.0/CentOS8/packages/x86_64/
enabled=1
#gpgcheck=1
gpgcheck=0
protect=1
#gpgkey=https://packages.daos.io/RPM-GPG-KEY-2023

2.2. 配置epel yum源

bash 复制代码
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch
enabled=1
priority=3
gpgcheck=0
countme=1

2.3. 生成缓存

bash 复制代码
dnf make cache

3. 源码获取

bash 复制代码
git clone --recurse-submodules --depth=1 -b v2.0.0 https://github.com/daos-stack/daos.git
cd daos
  • 测试发现,编译daos时,必须要通过git clone方式获取源码,通过下载zip包的方式,编译时会失败。因为在daos的编译配置文件中,会检查git仓库是否存在,如果不存在,则编译会失败。
  • 可以通过git config --global url."https://gh-proxy.com/".insteadOf https://方式来配置github镜像源。

4. 安装依赖

4.1. 安装编译环境的依赖包

bash 复制代码
./utils/scripts/install-el8.sh

高版本的daos还需要执行其他脚本,具体参考官网文档中对应的build from cratch专题。

4.2. 安装daos的依赖包(可选)

bash 复制代码
dnf install hdf5-devel
dnf builddep ./utils/rpms/daos.spec

测试发现时,如果采用官方文档的编译方式,也就是不提前安装daos的依赖包,而是选择使用--build-deps=yes来控制在编译的过程中拉取第三方依赖包的源码,放入build/extra/release/目录下,然后去编译依赖。但是这种方式不会编译出依赖包的rpm包,只会编译出可执行文件和库文件。如果要编译出daos的rpm包,就需要这些依赖包的rpm包,所以建议提直接安装好这些依赖包,而不是选择自己去编译,毕竟这些依赖包也是直接从daos repo中获取的,daos已经给你编译好了,直接拿来用不好吗?

5. 编译

5.1. 编译daos

bash 复制代码
scons install --jobs 4  --config=force --build-deps=no

上述命令是编译daos的可执行文件和库文件,而且不需要编译第三方依赖。这些编译出来的文件最终会放在./intsall目录下。

5.2. 编译daos rpms

bash 复制代码
scons rpms --jobs 4  --config=force --build-deps=no

上述命令是编译daos的rpm包,而且不需要编译第三方依赖的rpm包。这些编译出来的rpm包最终会放在./utils/rpms/_topdir目录下。

5.3. 编译指定模块

目前daos只支持server、client、test模块。默认情况下,daos会编译所有模块,如果想要编译指定模块,可以使用scons install 模块类型的方式。下面是编译server模块的例子:

bash 复制代码
scons install server --jobs 4  --config=force --build-deps=no

6. 参考资料

  • 1\] [https://docs.daos.io/v2.0/QSG/build_from_scratch](https://docs.daos.io/v2.0/QSG/build_from_scratch/)

相关推荐
User_芊芊君子28 分钟前
【分布式训练】CANN SHMEM跨设备内存通信库:构建高效多机多卡训练的关键组件
分布式·深度学习·神经网络·wpf
酷酷的崽7981 小时前
CANN 开源生态解析(四):`cann-dist-train` —— 构建高效可扩展的分布式训练引擎
分布式·开源
惊讶的猫2 小时前
AMQP 与 RabbitMQ 四大模型
分布式·rabbitmq
灰子学技术2 小时前
istio从0到1:如何解决分布式配置同步问题
分布式·云原生·istio
小马爱打代码2 小时前
ZooKeeper:入门实战
分布式·zookeeper·云原生
永远都不秃头的程序员(互关)3 小时前
CANN赋能AIGC分布式训练:硬核通信,加速大模型智能生成新纪元
分布式·aigc
杜子不疼.4 小时前
CANN集合通信库HCCL的大规模分布式训练通信优化与拓扑感知实践
分布式
ALex_zry16 小时前
Redis Cluster 分布式缓存架构设计与实践
redis·分布式·缓存
为什么不问问神奇的海螺呢丶18 小时前
n9e categraf rabbitmq监控配置
分布式·rabbitmq·ruby
TTBIGDATA1 天前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger