2017-11-28 2 views
1

CentOS 6.2에서는 gcc 4.8.0을 사용하여 컴파일 오류가 발생하여 dpdk-stable-17.05.2를 컴파일했습니다. 컴파일 명령을 는 T = x86_64의 네이티브-linuxapp-GCCgcc 컴파일 dpdk 오류 : 명령이 없습니다. vextract128

출력을 설치합니다

== Build lib/librte_eal/linuxapp/eal  
    CC eal.o  
    CC eal_hugepage_info.o  
    CC eal_memory.o 
/tmp/ccZMmoL5.s: Assembler messages:  
/tmp/ccZMmoL5.s:1189: Error: no such instruction: `vextracti128 $0x1,%ymm0,internal_config+192(%rip)' 
/tmp/ccZMmoL5.s:1192: Error: no such instruction: `vextracti128 $0x1,%ymm0,internal_config+248(%rip)'  
/tmp/ccZMmoL5.s:1196: Error: no such instruction: `vextracti128 $0x1,%ymm0,internal_config+304(%rip)' 

또한 GCC 4.9.0 및 dpdk-17.11이 같은 컴파일 오류가 발생했습니다 시도했다. 누구나 같은 오류가 발생하거나 해결책이 있습니까?

추가는 자세한 출력 명령을 컴파일 :
만들 T = x86_64의 네이티브-linuxapp-GCC V = 1

출력 : 이것은 GCC 4.8.0 버그

== Build lib/librte_eal/linuxapp/eal 
gcc -Wp,-MD,./.eal_memory.o.d.tmp -m64 -pthread -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_RDRAND -DRTE_MACHINE_CPUFLAG_AVX2 -I/root/dpdk/dpdk-stable-17.05.2/build/include -include /root/dpdk/dpdk-stable-17.05.2/build/include/rte_config.h -I/root/dpdk/dpdk-stable-17.05.2/lib/librte_eal/linuxapp/eal/include -I/root/dpdk/dpdk-stable-17.05.2/lib/librte_eal/common -I/root/dpdk/dpdk-stable-17.05.2/lib/librte_eal/common/include -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -O3 -o eal_memory.o -c /root/dpdk/dpdk-stable-17.05.2/lib/librte_eal/linuxapp/eal/eal_memory.c 
/tmp/ccUFBnoh.s: Assembler messages: 
/tmp/ccUFBnoh.s:1188: Error: no such instruction: `vextracti128 $0x1,%ymm0,internal_config+192(%rip)' 
/tmp/ccUFBnoh.s:1191: Error: no such instruction: `vextracti128 $0x1,%ymm0,internal_config+248(%rip)' 
/tmp/ccUFBnoh.s:1195: Error: no such instruction: `vextracti128 $0x1,%ymm0,internal_config+304(%rip)' 
make[5]: *** [eal_memory.o] Error 1 
+1

로 GCC를 업그레이드합니다. 또한,'make T = x86_64-native-linuxapp-gcc' (설치하지 않고)를 실행하여 로컬로 빌드하는지 확인하십시오. –

+0

GCC 4.9조차 실제로 오래되고 유지 보수가되지 않습니다. 현재 GCC는 [GCC 7] (https://gcc.gnu.org/gcc-7/) (2017 년 11 월)이고 GCC 8은 몇 주 후에 사라집니다. 소스 코드에서 컴파일러를 빌드하여 시스템에 적어도 GCC6을 설치하십시오. –

답변

1

(https://github.com/nouiz/Theano/commit/04cb385df37c669b2f449d34d34d9835085cbce9 참조). 다른 소프트웨어에서 발견 된 유사한 문제입니다.

여러 가지 방법으로 주위를 둘러 볼 수 있습니다.

1) 강제 no-avx2는 gcc -mno-avx2입니다. vextracti128은 avx2 기능이므로 컴파일러는이 최적화를 사용하지 않습니다.

또는

2

) 상세가 켜져 사용하면 빌드를 수행하려고한다 4.8.5

+1

gcc 4.8.5가 작동하면 gcc 4.9.0이 작동해야합니까? 필자의 경우 gcc 4.9.0은 gcc 4.8.0과 동일한 컴파일 오류가 있습니다. 코드를 컴파일하여 gcc 4.9.0을 설치했습니다. [루트 @ 로컬 호스트] # gcc -v 내장 사양 사용. COLLECT_GCC = gcc가 COLLECT_LTO_WRAPPER =/usr/지방/libexec 디렉토리/GCC/x86_64에-알 - 리눅스 GNU/4.9.0/LTO-래퍼 대상 : ../gcc- : x86_64에-알 - 리눅스 GNU 함께 구성 4.9.0/configure --enable-checking = release --enable-languages ​​= c, C++ --disable-multilib 쓰레드 모델 : posix gcc 버전 4.9.0 (GCC) – TseChun

+0

잘 모르겠다. 시도해 볼 수 있습니까? CFLAGS –

+0

에서 gcc -mno-avx2로 소프트웨어 컴파일하기 gcc 4.x 시리즈가 avx/avx2 지원을 망가 뜨렸다. 새로운 gcc를 컴파일 할 수 있다면, gcc-7.x 시리즈 –