一、先安装DPDK的依赖库
1.1、安装 meson
参考:ubuntu上安装meson & 如何使用meson编译C代码
安装其他依赖库:
sudo apt install software-properties-common
//续测试省略这一步是否可以???
sudo add-apt-repository ppa:deadsnakes/ppa 将Deadsnakes PPA添加到系统的来源列表中
sudo apt-get install python3.8 python-pip ninja-build
apt install python3-pyelftools
ln 修改 /usr/bin/python3 链接到 python3.8
python3.8 --version
pip3 install meson
meson build
错误:
ERROR: C shared or static library 'yaml' not found
解决方案:
https://pyyaml.org/wiki/LibYAML
二、编译 DPDK
cd dpdk
meson build
cd build
ninja
sudo -s
ninja install
ldconfig
Note:不可以简单的将编译之后的DPDK复制到目的主机,需要重新编译。因为编译的时候会根据CPU指令集进行性能优化,所以不同主机编译结果是不同的。
三、编译DPDK应用
例如:
编译头文件 agile.h 及对应的源文件:
/root/dpdk-vdpa/drivers/vdpa/agile/base/agile.h
编译:
cd /root/dpdk-vdpa/build
ninja
编译完成后在/root/dpdk-vdpa/build/examples/ 中生成可执行程序:dpdk-vdpa
root@dayu:~/dpdk-vdpa/build/examples# ls
dpdk-vdpa dpdk-vdpa.p vdpa
参考:ubuntu环境下安装DPDK(21.02)_我要出家当道士-程序员宝宝
编译过程中遇到的错误
错误:
root@dayu:~/dpdk-vdpa/build# ninja
[0/1] Regenerating build files.
Traceback (most recent call last):
File "/usr/share/meson/mesonbuild/mesonmain.py", line 361, in run
app.generate()
File "/usr/share/meson/mesonbuild/mesonmain.py", line 148, in generate
env = environment.Environment(self.source_dir, self.build_dir, self.meson_script_launcher, self.options, self.original_cmd_line_args)
File "/usr/share/meson/mesonbuild/environment.py", line 254, in __init__
self.coredata = coredata.load(self.get_build_dir())
File "/usr/share/meson/mesonbuild/coredata.py", line 348, in load
obj = pickle.load(f)
AttributeError: Can't get attribute 'UserFeatureOption' on <module 'mesonbuild.coredata' from '/usr/share/meson/mesonbuild/coredata.py'>
FAILED: build.ninja
/usr/local/bin/meson --internal regenerate /root/dpdk-vdpa /root/dpdk-vdpa/build --backend ninja
ninja: error: rebuilding 'build.ninja': subcommand failed
看错误是和meson相关。
解决办法:升级meson的版本,比如 从 0.45.1 升级到 0.60.0。