DPDK的make方式的编译方法百度下基本都差不多,参考链接在末尾哈。
这里讲述下本人在编译过程中遇到的问题,高手就不用看了,菜鸟的辛酸经历。
1. dpdk编译后没有igb_uio.ko, 没有kmod文件。
问题背景:CentOS Linux release 7.7.1908 + kernel >=3.16 + dpdk20.02
问题现象:dpdk20.02官网文档 中要求kernel >= 3.16, 且官网中说明dpdk20.02可以运行在CentOS7中。但编译过程中没有kmod文件产生,无论手动make编译、meson编译还是dpdk脚本编译。
可能原因:kernel-devel、kernel-headers和内核版本不是对应的。
查看命令:uname -a ; rpm -qa kernel\* | sort
可以通过以下方式安装和系统内核版本一致的:
yum install “kernel-devel-uname-r == $(uname -r)”
yum install “kernel-headers-uname-r == $(uname -r)”
但我的环境里不能升级到和内核一样的版本,因为对应的最新的版本。
解决办法:使用dpdk18.11.6或之前的版本,kernel-devel等版本最新到3.10.0-1062.12.1,所以kernel也是用的3.10
2. 编译问题:
/usr/src/kernels/3.10.0-1062.12.1.el7.x86_64/include/linux/init.h:318:7: 错误:‘cleanup_module’ specifies less restrictive attribute than its target ‘igbuio_pci_exit_module’: ‘cold’ [-Werror=missing-attributes]
318 | void cleanup_module(void) __attribute__((alias(#exitfn)));
| ^~~~~~~~~~~~~~
/home/samba_share/spdk/spdk-20.01/dpdk/dpdk-stable-18.11.6/x86_64-native-linuxapp-gcc/build/kernel/lin