近日遇到一个需求,需要在Centos7.9上源码编译安装dpdk-21.11.2,并且dpdk的安装目录为/opt/。安装过程较为复杂,特此记录一下,方便日后查看。
相关配置 | 参数 |
---|---|
编译环境 | 虚拟机Centos7.9 |
内核版本 | 3.10.0-957 |
dpdk版本 | 21.11.2 |
DPDK是INTEL公司开发的一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案,主要技术有用户态、轮询取代中断、零拷贝、网卡RSS、访存DirectIO等。其它的资料可自行百度了解。
一、准备编译环境
1、安装相关依赖包。
DPDK在20版本以后需要使用meson和ninja编译安装。
(1)安装pip3环境
yum install python3 python3-pip
pip3 install --upgrade pip
(2)安装meson
pip3 install meson
(3)安装ninja
pip3 install ninja
注意: 如果出现WARNING: The script ninja is installed in ‘/usr/local/bin’ which is not on PATH. 则需要添加环境变量。
vim /etc/profile
文件末尾添加export PATH=“/usr/local/bin:$PATH”
(4)安装pyelftools
pip3 install pyelftools
pip3 install ninja
2、下载dpdk源码安装包。
官网下载链接:http://core.dpdk.org/download/
下载对应的21.11.2版本的源码包,然后上传到服务器指定位置即可。这里小编则是上传到了/opt/下。
二、编译安装、测试
(1)编译安装
cd /opt/
tar zxf dpdk-stable-21.11.2.tar.gz
cd dpdk-stable-21.11.2/
export DPDK_DIR=/opt/dpdk-stable-21.11.2
export DPDK_BUILD=$DPDK_DIR/build
#查看配置
meson configure
meson build --prefix=/opt/
ninja -C build
DESTDIR=/opt/ ninja -C build install
ldconfig
export PKG_CONFIG_PATH=/opt/lib64/pkgconfig
(2)测试是否安装成功
安装成功后,输入命令,显示对应的版本号信息即为安装成功。
pkg-config --modversion libdpdk
(3)运行测试样例
编译运行helloworld样例:
#根据自己的安装路径去找到对应的helloworld测试样例
/opt/dpdk-stable-21.11.2/examples/helloworld
make
./build/helloworld --no-huge
出现下图即为成功。
三、常见问题及解决方法
1、报错:buildtools/meson.build:49:8: ERROR: Problem encountered: missing python module: elftools
解决方法:pip3 install pyelftools && pip3 install ninja
2、报错: go meson_options.txt:7:0: ERROR: Unknown type feature.
解决方法:pip3 install --user meson $ export PATH=~/.local/bin:$PATH