SPDK源码编译流程

本文详细介绍了如何在Centos7.8环境下编译SPDK v20.10版本。首先通过git克隆SPDK代码,并切换到指定版本,然后获取并初始化submodule。接着,使用scripts/pkgdep.sh脚本安装依赖包,配置编译环境。配置完成后,执行make进行编译。最后,编译结果位于build目录,包括bin和lib下的二进制文件和库文件。若需编译动态库,可重新配置并编译。


开发环境

Centos7.8,内核:3.10.0-1127.el7.x86_64

下载代码

获取spdk代码

使用git下载代码

[root@localhost Packages]# git clone https://github.com/spdk/spdk.git
Cloning into 'spdk'...
remote: Enumerating objects: 155376, done.
remote: Counting objects: 100% (920/920), done.
remote: Compressing objects: 100% (393/393), done.
remote: Total 155376 (delta 539), reused 883 (delta 518), pack-reused 154456
Receiving objects: 100% (155376/155376), 66.06 MiB | 346.00 KiB/s, done.
Resolving deltas: 100% (122025/122025), done.

这里展示编译v20.10版本,其他版本的方法类似。切换到v20.10版本:

[root@localhost Packages]# cd spdk
[root@localhost spdk]# git checkout v20.10

获取submodule

spdk以submodule的形式引用了其他的几个项目代码,其中包括:dpdk,intel-ipsec-mb,isa-l和ocf,获取spdk代码后还要将引用的submodule代码下载下来:

[root@localhost spdk]# git submodule update --init

编译流程

检查并安装依赖包

spdk提供了检查编译依赖包的脚本,用于自动检查和安装依赖包。执行脚本:

[root@localhost spdk]# ./scripts/pkgdep.sh

脚本正确执行完,spdk的编译环境就搭建好了,可以开始配置编译了。

配置和编译

使用configure脚本完成配置,执行前可以使用configure --help查看配置的选项,可以根据自己的需求添加。

[root@localhost spdk]# ./configure

配置完成就可以开始编译了。

[root@localhost spdk]# make

编译结果

编译完成的结果在build目录中,其中bin目录下就是可以运行的spdk二进制文件,lib目录中时spdk提供的库:

[root@kvmit spdk]# cd build/
[root@kvmit build]# ls
bin  examples  fio  include  lib
[root@kvmit build]# cd bin/
[root@kvmit bin]# ls
iscsi_tgt  iscsi_top  nvmf_tgt  spdk_dd  spdk_lspci  spdk_tgt  spdk_top  spdk_trace  spdk_trace_record  vhost
[root@kvmit build]# cd lib
[root@kvmit lib]# ls
libspdk_accel.a        libspdk_bdev_null.a        libspdk_blobfs_bdev.a   libspdk_event_nvmf.a   libspdk_log.a     libspdk_sock_posix.a
libspdk_accel_ioat.a   libspdk_bdev_nvme.a        libspdk_conf.a          libspdk_event_scsi.a   libspdk_lvol.a    libspdk_thread.a
libspdk_bdev.a         libspdk_bdev_passthru.a    libspdk_env_dpdk.a      libspdk_event_sock.a   libspdk_nbd.a     libspdk_trace.a
libspdk_bdev_aio.a     libspdk_bdev_raid.a        libspdk_env_dpdk_rpc.a  libspdk_event_vhost.a  libspdk_net.a     libspdk_util.a
libspdk_bdev_delay.a   libspdk_bdev_split.a       libspdk_event.a         libspdk_event_vmd.a    libspdk_notify.a  libspdk_ut_mock.a
libspdk_bdev_error.a   libspdk_bdev_virtio.a      libspdk_event_accel.a   libspdk_ftl.a          libspdk_nvme.a    libspdk_vhost.a
libspdk_bdev_ftl.a     libspdk_bdev_zone_block.a  libspdk_event_bdev.a    libspdk_ioat.a         libspdk_nvmf.a    libspdk_virtio.a
libspdk_bdev_gpt.a     libspdk_blob.a             libspdk_event_iscsi.a   libspdk_iscsi.a        libspdk_rpc.a     libspdk_vmd.a
libspdk_bdev_lvol.a    libspdk_blob_bdev.a        libspdk_event_nbd.a     libspdk_json.a         libspdk_scsi.a
libspdk_bdev_malloc.a  libspdk_blobfs.a           libspdk_event_net.a     libspdk_jsonrpc.a      libspdk_sock.a

因为在配置时没有选择--with-shared选项,这里编译出来的都是静态库,二进制文件也是静态链接,所以相对较大。如果要编译动态库的形式,可以在配置时添加上shared选项,再重新编译一遍。

[root@localhost spdk]# ./configure --with-shared

编译完成就可以直接使用二进制文件和库文件了,也可以使用make install安装到系统中使用。

[root@localhost spdk]# make install
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Angel老豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值