DPDK开源社区与您共享初夏的清凉和煦


为不同的Intel平台交叉编译DPDK
在某些DPDK开发环境中,编译服务器是固定的(使用Xeon系列CPU),但DPDK应用的部署平台往往与编译服务器不同(Atom、Core和Xeon)。为了让编译器使用部分平台特有指令对软件进行优化,DPDK在编译时通过TARGET的第二个字段指定了平台(ARCH-MACHINE-EXECENV-TOOLCHAIN),目前用于i686、x86_64的TARGET模板使用的都是native,所以有时会导致DPDK应用在部署平台上无法运行。
本文所引用的代码和DPDK程序均来自DPDK-17.11,编译器使用gcc 4.8.5。
下面的l2fwd是在Intel® Xeon E5 2658v4设备上使用T=x86_64-native-linuxapp-gcc编译的,无法在Intel® Atom C3858上运行,提示程序中含有非法的指令:

TARGET模板对应的配置文件都在config/目录中,文件名字以defconfig_开头。
在config/defconfig_x86_64-native-linuxapp-gcc中,“native”赋值给了 CONFIG_RTE_MACHINE:

在DPDK进行编译时,会:
根据CONFIG_RTE_MACHINE查找mk/machine中保存的每个平台的编译参数&