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/)

相关推荐
CodeWithMe2 小时前
【Note】《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring
分布式·kafka
Alaia.3 小时前
【kafka 3.9.1】单机版集群部署并配置kafka的SASL认证
分布式·kafka
勤奋的知更鸟4 小时前
Kettle + 大数据实战:从数据采集到分布式处理的完整流程指南
大数据·分布式
Kookoos5 小时前
ABP VNext + Cosmos DB Change Feed:搭建实时数据变更流服务
数据库·分布式·后端·abp vnext·azure cosmos
掘金-我是哪吒18 小时前
分布式微服务系统架构第156集:JavaPlus技术文档平台日更-Java线程池使用指南
java·分布式·微服务·云原生·架构
亲爱的非洲野猪18 小时前
Kafka消息积压的多维度解决方案:超越简单扩容的完整策略
java·分布式·中间件·kafka
活跃家族18 小时前
分布式压测
分布式
前端世界20 小时前
HarmonyOS开发实战:鸿蒙分布式生态构建与多设备协同发布全流程详解
分布式·华为·harmonyos
DavidSoCool20 小时前
RabbitMQ使用topic Exchange实现微服务分组订阅
分布式·微服务·rabbitmq