DPDK在Windows上的独立构建失败,例如应用程序



使用选项-Dexamples=通过DPDK介子构建示例应用程序骨架或l2fwd或l3fwd,创建二进制可执行文件,不会出现任何警告或错误。但是执行与独立构建相同的示例会导致DPDK构建错误

C:dpdkdpdk-21.02examplesskeleton>gcc basicfwd.c -include rte_config.h -march=native -IC:/include  -Wl,--as-needed -LC:/lib -lrte_cfgfile -lrte_hash -lrte_cmdline -lrte_pci -lrte_ethdev -lrte_meter -lrte_net -lrte_mbuf -lrte_mempool -lrte_rcu -lrte_ring -lrte_eal -lrte_telemetry -lrte_kvargs
In file included from C:/include/rte_eal.h:21,
from basicfwd.c:7:
C:/include/rte_bus.h:22:10: fatal error: sys/queue.h: No such file or directory
#include <sys/queue.h>
^~~~~~~~~~~~~
compilation terminated.

预期:

C:dpdkdpdk-21.02examplesskeleton>dir
Directory of C:dpdkdpdk-21.02examplesskeleton
<DIR>          .
<DIR>          ..
163,348 a.exe
5,458 basicfwd.c
1,511 Makefile
322 meson.build

重现错误的步骤

  • 平台:x86_64,Intel E5 2680 Xeon
  • 操作系统:windows服务器2019
  • DPDK版本:21.02
  • 介子版本:0.57.1
  • 忍者版本:1.10.2
  • Pkg配置版本:0.26
  • 遵循的步骤:http://doc.dpdk.org/guides/windows_gsg/index.html
  • 编译器标志:执行pkg-config --cflags --libs libdpdk

当使用介子meson -Dexamples=l2fwd buildmeson build时,CFLAGS和LDFLAGS存在差异。在前一个场景中,依赖项直接从DPDK根文件夹中提取,并直接链接到lib/librte_eal/windows/include。但是,当DPDK pkg安装完lib/librte_eal/windows/include下的文件后,不会进行复制,这会导致构建失败。

检查lib/librte_eal/windows/中的meson.build可以发现,唯一的安装是针对"rte_os.h"、"rte_virt2phys.h"one_answers"rte_windows.h"。文件夹"netinet"one_answers"sys"将被跳过。根据DPDK维护人员的更新,由于windows上的DPDK是实验性的,因此仅使用meson -Dexamples=l2fwd build进行验证。因此,由于临时工作是使用-I[DPDK folder]liblibrte_ealwindowsinclude

注:

  1. 感谢@stackinside的评论
  2. 正在使用DPDK补丁来插入丢失的文件

相关内容

最新更新