emmericp / MoonGen

MoonGen is a fully scriptable high-speed packet generator built on DPDK and LuaJIT. It can saturate a 10 Gbit/s connection with 64 byte packets on a single CPU core while executing user-provided Lua scripts for each packet. Multi-core support allows for even higher rates. It also features precise and accurate timestamping and rate control.
MIT License
1.04k stars 235 forks source link

Build failed #266

Closed sitilge closed 4 years ago

sitilge commented 4 years ago

Following the instructions and when running build.sh, it yields the output given below.

I remember having similar problems with flags when building NFF-Go. They use this script to export some flags: https://github.com/intel-go/nff-go-nat/blob/master/env.sh

Build libmoon with MoonGen
==== Building LuaJIT 2.1.0-beta3 ====
make -C src
make[1]: Entering directory '/home/martins/MoonGen/libmoon/deps/luajit/src'
make[1]: Nothing to be done for 'default'.
make[1]: Leaving directory '/home/martins/MoonGen/libmoon/deps/luajit/src'
==== Successfully built LuaJIT 2.1.0-beta3 ====
==== Installing LuaJIT 2.1.0-beta3 to /usr/local ====
mkdir -p /home/martins/MoonGen/libmoon/deps/luajit/usr/local/bin /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib /home/martins/MoonGen/libmoon/deps/luajit/usr/local/include/luajit-2.1 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/share/man/man1 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/pkgconfig /home/martins/MoonGen/libmoon/deps/luajit/usr/local/share/luajit-2.1.0-beta3/jit /home/martins/MoonGen/libmoon/deps/luajit/usr/local/share/lua/5.1 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/lua/5.1
cd src && install -m 0755 luajit /home/martins/MoonGen/libmoon/deps/luajit/usr/local/bin/luajit-2.1.0-beta3
cd src && test -f libluajit.a && install -m 0644 libluajit.a /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/libluajit-5.1.a || :
rm -f /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/libluajit-5.1.so.2.1.0 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/libluajit-5.1.so /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/libluajit-5.1.so.2
cd src && test -f libluajit.so && \
  install -m 0755 libluajit.so /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/libluajit-5.1.so.2.1.0 && \
  ldconfig -n /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib && \
  ln -sf libluajit-5.1.so.2.1.0 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/libluajit-5.1.so && \
  ln -sf libluajit-5.1.so.2.1.0 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/libluajit-5.1.so.2 || :
cd etc && install -m 0644 luajit.1 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/share/man/man1
cd etc && sed -e "s|^prefix=.*|prefix=/usr/local|" -e "s|^multilib=.*|multilib=lib|" luajit.pc > luajit.pc.tmp && \
  install -m 0644 luajit.pc.tmp /home/martins/MoonGen/libmoon/deps/luajit/usr/local/lib/pkgconfig/luajit.pc && \
  rm -f luajit.pc.tmp
cd src && install -m 0644 lua.h lualib.h lauxlib.h luaconf.h lua.hpp luajit.h /home/martins/MoonGen/libmoon/deps/luajit/usr/local/include/luajit-2.1
cd src/jit && install -m 0644 bc.lua bcsave.lua dump.lua p.lua v.lua zone.lua dis_x86.lua dis_x64.lua dis_arm.lua dis_arm64.lua dis_arm64be.lua dis_ppc.lua dis_mips.lua dis_mipsel.lua dis_mips64.lua dis_mips64el.lua vmdef.lua /home/martins/MoonGen/libmoon/deps/luajit/usr/local/share/luajit-2.1.0-beta3/jit
==== Successfully installed LuaJIT 2.1.0-beta3 to /usr/local ====

Note: the development releases deliberately do NOT install a symlink for luajit
You can do this now by running this command (with sudo):

  ln -sf luajit-2.1.0-beta3 /home/martins/MoonGen/libmoon/deps/luajit/usr/local/bin/luajit

Configuration done using x86_64-native-linuxapp-gcc
== Build lib
== Build lib/librte_compat
== Build lib/librte_eal
== Build lib/librte_eal/common
== Build lib/librte_eal/linuxapp
== Build lib/librte_eal/linuxapp/eal
== Build lib/librte_eal/linuxapp/igb_uio
  CC eal_hugepage_info.o
  CC eal.o
  CC eal_memory.o
  CC eal_thread.o
  CC eal_log.o
  CC eal_vfio.o
  CC eal_vfio_mp_sync.o
  CC eal_pci.o
  CC eal_pci_uio.o
  CC eal_pci_vfio.o
  CC eal_debug.o
  CC eal_lcore.o
  CC eal_timer.o
  CC eal_interrupts.o
  CC eal_alarm.o
  CC eal_common_lcore.o
  CC eal_common_timer.o
  CC eal_common_memzone.o
  CC eal_common_log.o
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘find_heap_max_free_elem’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:115:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  115 |   malloc_heap_get_stats(&mcfg->malloc_heaps[i], &stats);
      |                         ^~~~~~~~~~~~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘memzone_reserve_aligned_thread_unsafe’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:219:36: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  219 |  void *mz_addr = malloc_heap_alloc(&mcfg->malloc_heaps[socket], NULL,
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:228:32: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  228 |    mz_addr = malloc_heap_alloc(&mcfg->malloc_heaps[i],
      |                                ^~~~~~~~~~~~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_reserve_thread_safe’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:276:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  276 |  rte_rwlock_write_lock(&mcfg->mlock);
      |                        ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:281:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  281 |  rte_rwlock_write_unlock(&mcfg->mlock);
      |                          ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_free’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:336:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  336 |  rte_rwlock_write_lock(&mcfg->mlock);
      |                        ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:352:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  352 |  rte_rwlock_write_unlock(&mcfg->mlock);
      |                          ^~~~~~~~~~~~
In function ‘pci_get_kernel_driver_by_path’,
    inlined from ‘pci_scan_one.isra.0’ at /home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c:338:8:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_lookup’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:370:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  370 |  rte_rwlock_read_lock(&mcfg->mlock);
      |                       ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:374:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  374 |  rte_rwlock_read_unlock(&mcfg->mlock);
      |                         ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c:82:3: error: ‘strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
   82 |   strncpy(dri_name, name + 1, strlen(name + 1) + 1);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_dump’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c: In function ‘pci_scan_one.isra.0’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:389:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  389 |  rte_rwlock_read_lock(&mcfg->mlock);
      |                       ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c:82:31: note: length computed here
   82 |   strncpy(dri_name, name + 1, strlen(name + 1) + 1);
      |                               ^~~~~~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:403:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  403 |  rte_rwlock_read_unlock(&mcfg->mlock);
      |                         ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_eal_memzone_init’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:428:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  428 |  rte_rwlock_write_lock(&mcfg->mlock);
      |                        ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:434:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  434 |  rte_rwlock_write_unlock(&mcfg->mlock);
      |                          ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_walk’:
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:448:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  448 |  rte_rwlock_read_lock(&mcfg->mlock);
      |                       ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/lib/librte_eal/common/eal_common_memzone.c:453:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  453 |  rte_rwlock_read_unlock(&mcfg->mlock);
      |                         ^~~~~~~~~~~~
  CC eal_common_launch.o
  CC eal_common_vdev.o
cc1: all warnings being treated as errors
make[5]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/internal/rte.compile-pre.mk:140: eal_pci.o] Error 1
make[5]: *** Waiting for unfinished jobs....
cc1: all warnings being treated as errors
make[5]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/internal/rte.compile-pre.mk:138: eal_common_memzone.o] Error 1
make[4]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/rte.subdir.mk:65: eal] Error 2
make[4]: *** Waiting for unfinished jobs....
  CC [M]  /home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o
/home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c: In function ‘igbuio_pci_probe’:
/home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:429:6: error: this statement may fall through [-Werror=implicit-fallthrough=]
  429 |   if (pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_MSIX) == 1) {
      |      ^
/home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:437:2: note: here
  437 |  case RTE_INTR_MODE_LEGACY:
      |  ^~~~
In file included from /home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:27:
./include/linux/device.h:1778:2: error: this statement may fall through [-Werror=implicit-fallthrough=]
 1778 |  _dev_notice(dev, dev_fmt(fmt), ##__VA_ARGS__)
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:445:3: note: in expansion of macro ‘dev_notice’
  445 |   dev_notice(&dev->dev, "PCI INTX mask not supported\n");
      |   ^~~~~~~~~~
/home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:447:2: note: here
  447 |  case RTE_INTR_MODE_NONE:
      |  ^~~~
cc1: all warnings being treated as errors
make[7]: *** [scripts/Makefile.build:266: /home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o] Error 1
make[6]: *** [Makefile:1693: /home/martins/MoonGen/libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio] Error 2
make[5]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/rte.module.mk:79: igb_uio.ko] Error 2
make[4]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/rte.subdir.mk:65: igb_uio] Error 2
make[3]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/rte.subdir.mk:65: linuxapp] Error 2
make[2]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/rte.subdir.mk:63: librte_eal] Error 2
make[1]: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/rte.sdkbuild.mk:78: lib] Error 2
make: *** [/home/martins/MoonGen/libmoon/deps/dpdk/mk/rte.sdkroot.mk:129: all] Error 2
make -C deps/http-parser library
make[1]: Entering directory '/home/martins/MoonGen/libmoon/lua/lib/turbo/deps/http-parser'
gcc  -shared -Wl,-soname=libhttp_parser.so.2.1 -o libhttp_parser.so.2.1 libhttp_parser.o
make[1]: Leaving directory '/home/martins/MoonGen/libmoon/lua/lib/turbo/deps/http-parser'
gcc -Ideps/http-parser/ -shared -O3 -Wall -g  -fPIC deps/http-parser/libhttp_parser.o deps/turbo_ffi_wrap.c -o libtffi_wrap.so  -lcrypto -lssl
make: Nothing to be done for 'all'.
-- Building Intel TBB: /usr/bin/make -j8 tbb_build_prefix=tbb_cmake_build_subdir tbb_build_dir=/home/martins/MoonGen/build/libmoon/tbb_cmake_build compiler=gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /home/martins/MoonGen/build
make[1]: Entering directory '/home/martins/MoonGen/build'
make[2]: Entering directory '/home/martins/MoonGen/build'
make[2]: Leaving directory '/home/martins/MoonGen/build'
make[2]: Entering directory '/home/martins/MoonGen/build'
[  3%] Building C object libmoon/CMakeFiles/moon.dir/src/memory.c.o
[  6%] Building C object libmoon/CMakeFiles/moon.dir/src/device.c.o
[ 10%] Building C object libmoon/CMakeFiles/moon.dir/src/i40e.c.o
[ 13%] Building C object libmoon/CMakeFiles/moon.dir/src/util.c.o
[ 17%] Building CXX object libmoon/CMakeFiles/moon.dir/src/task-results.cpp.o
[ 20%] Building CXX object libmoon/CMakeFiles/moon.dir/src/pipe.cpp.o
[ 24%] Building CXX object libmoon/CMakeFiles/moon.dir/src/namespaces.cpp.o
[ 27%] Building CXX object libmoon/CMakeFiles/moon.dir/src/lock.cpp.o
/home/martins/MoonGen/libmoon/src/device.c:2:10: fatal error: rte_ethdev.h: No such file or directory
    2 | #include <rte_ethdev.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
/home/martins/MoonGen/libmoon/src/memory.c:2:10: fatal error: rte_mbuf.h: No such file or directory
    2 | #include <rte_mbuf.h>
      |          ^~~~~~~~~~~~
/home/martins/MoonGen/libmoon/src/i40e.c:2:10: fatal error: rte_ethdev.h: No such file or directory
    2 | #include <rte_ethdev.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
compilation terminated.
make[2]: *** [libmoon/CMakeFiles/moon.dir/build.make:102: libmoon/CMakeFiles/moon.dir/src/device.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [libmoon/CMakeFiles/moon.dir/build.make:115: libmoon/CMakeFiles/moon.dir/src/i40e.c.o] Error 1
make[2]: *** [libmoon/CMakeFiles/moon.dir/build.make:76: libmoon/CMakeFiles/moon.dir/src/memory.c.o] Error 1
/home/martins/MoonGen/libmoon/src/util.c:3:10: fatal error: rte_ip.h: No such file or directory
    3 | #include <rte_ip.h>
      |          ^~~~~~~~~~
compilation terminated.
make[2]: *** [libmoon/CMakeFiles/moon.dir/build.make:128: libmoon/CMakeFiles/moon.dir/src/util.c.o] Error 1
make[2]: Leaving directory '/home/martins/MoonGen/build'
make[1]: *** [CMakeFiles/Makefile2:123: libmoon/CMakeFiles/moon.dir/all] Error 2
make[1]: Leaving directory '/home/martins/MoonGen/build'
make: *** [Makefile:84: all] Error 2
emmericp commented 4 years ago

Please make sure you are using the latest version, this was fixed here: https://github.com/emmericp/MoonGen/commit/5ea92056af7f945a68d8687c9ad34c55bf6506e9

sitilge commented 4 years ago

I am using the latest one:

commit 5ea92056af7f945a68d8687c9ad34c55bf6506e9 (HEAD -> master, origin/master, origin/HEAD)