1. 程式人生 > >spdk/dpdk 編譯相關問題匯總

spdk/dpdk 編譯相關問題匯總

nds ram native driver module bin tac host initial

下載

到官網上下載最新的spdk 代碼。

解決編譯依賴

yum install libaio.x86_64 libaio-devel.x86_64

編譯dpdk

特別註意的是dpdk:依賴 /lib/modules/uname -a/build 下執行的內核已經存在,並且編譯過,為此需要:

  • 下載內核;
  • 安裝依賴;
    yum install ncurses.x86_64 ncurses-devel.x86_64 ncurses-libs.x86_64 ncurses-static.x86_64 ncurses-base.x86_64 ncurses-term.x86_64 ocaml-curses.x86_64

yum install numactl-devel.x86_64 numad.x86_64 numactl.x86_64

make menuconfig && make && make modules && make bzImage

註意用系統自帶的gcc make menuconfig 才可以彈出界面;

編譯spdk

參考下面命令:

./configure --with-fio=/home/xiaqichao/spdk/fio/fio --with-dpdk=/home/xiaqichao/latestspdk/spdk/dpdk/x86_64-native-linuxapp-gcc --without-virtio --without-vhost
make;
echo "EXTRA_CFLAGS=-fPIC" >> config/defconfig_x86_64-native-linuxapp-gcc && echo && make install T=x86_64-native-linuxapp-gcc DESTDIR=.

  LINK examples/bdev/fio_plugin/fio_plugin
/home/opt/gcc-4.8.2.bpkg-r4/gcc-4.8.2.bpkg-r4/sbin/../lib/gcc/x86_64-baidu-linux-gnu/4.8.2/../../../../x86_64-baidu-linux-gnu/bin/ld.bfd: cannot find -lnuma
collect2: error: ld returned 1 exit status
make[3]: *** [fio_plugin] Error 1
make[2]: *** [fio_plugin] Error 2
make[1]: *** [bdev] Error 2
make: *** [examples] Error 2
[[email protected]]# cd /
[[email protected]]# find ./ -name "libnuma*.so"
./usr/lib64/libnuma.so
[[email protected]]# cp ./usr/lib64/libnuma.so //home/opt/gcc-4.8.2.bpkg-r4/gcc-4.8.2.bpkg-r4/usr/lib
lib/     lib64/   libexec/
[[email protected]]# cp ./usr/lib64/libnuma.so //home/opt/gcc-4.8.2.bpkg-r4/gcc-4.8.2.bpkg-r4/usr/lib64/

可以通過下面的命令來解決上面的依賴:
yum install numactl-devel.x86_64 numad.x86_64 numactl.x86_64

然後重新編譯即可。

hello world nvme 版本程序演示

[ DPDK EAL parameters: hello_world -c 0x1 --file-prefix=spdk0 --base-virtaddr=0x1000000000 --proc-type=auto ]
EAL: Detected 32 lcore(s)
EAL: Auto-detected process type: PRIMARY
Initializing NVMe Controllers
EAL: PCI device 0000:86:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
EAL: PCI device 0000:87:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
EAL: PCI device 0000:88:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
EAL: PCI device 0000:89:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
EAL: PCI device 0000:af:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
EAL: PCI device 0000:b0:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
EAL: PCI device 0000:b1:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
Attaching to 0000:b1:00.0
EAL: PCI device 0000:b2:00.0 on NUMA socket 0
EAL:   probe driver: 8086:a54 spdk_nvme
Attached to 0000:b1:00.0
Using controller INTEL SSDPE2KX040T7  (BTLF82140KK74P0IGN  ) with 1 namespaces.
  Namespace ID: 1 size: 4000GB
Initialization complete.
Hello world!
nvme_ctrlr.c: 473:nvme_ctrlr_shutdown: *ERROR*: did not shutdown within 5 seconds

spdk/dpdk 編譯相關問題匯總