[dpdk-dev] 1.7.0 release failed to compile on linux

Qiaobing Xie qiaobing.xie at gmail.com
Thu Aug 14 23:44:31 CEST 2014


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







More information about the dev mailing list