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

相关推荐
小北方城市网5 小时前
分布式锁实战指南:从选型到落地,避开 90% 的坑
java·数据库·redis·分布式·python·缓存
范桂飓7 小时前
大模型分布式训练框架 Megatron-LM
人工智能·分布式
oMcLin10 小时前
如何在Debian 11上通过配置MySQL 8.0的分布式架构,提升跨区域数据同步的效率与延迟?
分布式·mysql·debian
一条咸鱼_SaltyFish11 小时前
[Day15] 若依框架二次开发改造记录:定制化之旅 contract-security-ruoyi
java·大数据·经验分享·分布式·微服务·架构·ai编程
IT 行者13 小时前
Spring Security 7 OAuth2 授权码分布式存储之Redis存储方案
redis·分布式·spring
潇凝子潇13 小时前
kafka之监控告警
分布式·kafka
Light6014 小时前
从“报告”到“能力”——构建智能化、可审计的数据治理闭环——领码 SPARK 数据质量平台白皮书
大数据·分布式·spark
maozexijr14 小时前
RabbitMQ Exchange Headers类型存在的意义?
分布式·rabbitmq
还在忙碌的吴小二14 小时前
XXL-SSO 分布式单点登录框架
分布式
独自破碎E14 小时前
RabbitMQ的消息确认机制是怎么工作的?
分布式·rabbitmq