[dpdk-users] Error when compiling pktgen-dpdk with dpdk-17.02

McCullough, Harrison harrison_mccullough at labs.att.com
Wed Aug 9 18:52:25 CEST 2017

I have been using dpdk version 17.02. A while ago I installed pktgen-dpdk and
got it working. However, when I recently downloaded it in a different machine
(a Ubuntu 16.04 VM), pktgen-dpdk failed to build. At first I thought it had
something to do with the fact that it was in a VM or something different
about the configuration of this new machine. However, after I rolled back to
the same commit that I used the first time it built fine.

<aside>I haven't actually gotten it to work completely because of issues with
memory and hugepages but the application starts just fine and it looks like
it's my problem now.</aside>

When I run make, this is what I  get:
$ make
== lib
== common
  CC copyright_info.o
  CC port_config.o
/home/username/pktgen-dpdk/lib/common/port_config.c: In function 'create_blacklist':
/home/username/pktgen-dpdk/lib/common/port_config.c:198:24: error: 'RTE_DEVTYPE_BLACKLISTED' undeclared (first use in this function)
/home/username/pktgen-dpdk/lib/common/port_config.c:198:24: note: each undeclared identifier is reported only once for each function it appears in
/home/username/pktgen-dpdk/lib/common/port_config.c:208:24: error: 'RTE_DEVTYPE_WHITELISTED' undeclared (first use in this function)
/home/username/dpdk-stable-17.02.1/mk/internal/rte.compile-pre.mk:138: recipe for target 'port_config.o' failed
make[3]: *** [port_config.o] Error 1
/home/username/dpdk-stable-17.02.1/mk/rte.extlib.mk:44: recipe for target 'all' failed
make[2]: *** [all] Error 2
/home/username/dpdk-stable-17.02.1/mk/rte.extsubdir.mk:46: recipe for target 'common' failed
make[1]: *** [common] Error 2
/home/username/dpdk-stable-17.02.1/mk/rte.extsubdir.mk:46: recipe for target 'lib' failed
make: *** [lib] Error 2

In the offending file, .../pktgen-dpdk/lib/common/port_config.c, there's a
line that I assume is checking the version number and using a different name
depending on which version of DPDK you're using. Unfortunately, it seems to
be confused as to when that name change took place. I checked 17.02, 17.05,
and 17.08, and they all seemed to be using RTE_DEVTYPE_BLACKLISTED_PCI

I changed the two places where it used did this check (one for
happily compiled most of the files (getting through lib, common, lua, src,
and cli). However, it got hung up on app with the following error:

make[2]: *** No rule to make target '/home/harrison/pktgen-dpdk/app/../lib/common/x86_64-native-linuxapp-gcc/libcommon.a'.  Stop.
/home/harrison/dpdk-stable-17.02.1/mk/rte.extapp.mk:47: recipe for target '/home/harrison/pktgen-dpdk/app/../lib/common/x86_64-native-linuxapp-gcc/libcommon.a' failed
make[1]: *** [/home/harrison/pktgen-dpdk/app/../lib/common/x86_64-native-linuxapp-gcc/libcommon.a] Error 2
/home/harrison/dpdk-stable-17.02.1/mk/rte.extsubdir.mk:46: recipe for target 'app' failed
make: *** [app] Error 2

I didn't feel like trying to track this any farther, especially because it's
working with the previous version of pktgen. I'm guessing this is failing
because I'm trying to use a newer version of pktgen with an older version of
DPDK, does that seem right? How am I supposed to know which commit works with
which version of DPDK? Are there tags in the pktgen-dpdk git repository that
mark it as compatible with certain releases of DPDK?

This is the sha-1 of the commit where everything works with DPDK 17.02:

This is the sha-1 of the master as it currently stands

More information about the users mailing list