Hi, I got the following error when I tried to compile 1.7.0 release tarball on a Linux box (Ubuntu 12.04/kernel=3.13.0-32-generic, gcc=4.6.3):
============ In file included from /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_osdep.h:41:0, from /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_hw.h:31, from /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api.h:31, from /home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_82575.c:38: /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3853:1: error: conflicting types for ?skb_set_hash? /usr/src/linux-headers-3.13.0-32-generic/include/linux/skbuff.h:740:1: note: previous definition of ?skb_set_hash? was here make[8]: *** [/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_82575.o] Error 1 ============ Apparently the version check around 'skb_set_hash' in kcompat.h failed for some reason. To work around it, I temporarily commented out that 'skb_set_hash' definition code and rte_kni complied fine. But it failed again in librte_pmd_ixgbe: ============= In file included from /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:41:0: /usr/lib/gcc/x86_64-linux-gnu/4.6/include/nmmintrin.h:31:3: error: #error "SSE4.2 instruction set not enabled" /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c: In function ?ixgbe_recv_pkts_vec?: /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: error: implicit declaration of function ?_mm_shuffle_epi8? [-Werror=implicit-function-declaration] /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: error: nested extern declaration of ?_mm_shuffle_epi8? [-Werror=nested-externs] /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:11: error: incompatible types when assigning to type ?__m128i? from type ?int? /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:298:11: error: incompatible types when assigning to type ?__m128i? from type ?int? /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:313:11: error: incompatible types when assigning to type ?__m128i? from type ?int? /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:314:11: error: incompatible types when assigning to type ?__m128i? from type ?int? /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: error: implicit declaration of function ?_mm_popcnt_u64? [-Werror=implicit-function-declaration] /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: error: nested extern declaration of ?_mm_popcnt_u64? [-Werror=nested-externs] cc1: all warnings being treated as errors make[3]: *** [ixgbe_rxtx_vec.o] Error 1 ============== My CPU is the older Intel C2D E6550 which does not have sse4.2/sse4.1 support. Is there a way to work around this? -Q