2017-11-28 32 views
1

CentOS 6.2では、gcc 4.8.0を使用してコンパイルエラー(dpdk-stable-17.05.2)をコンパイルしました。 コンパイルコマンド: はT = x86_64をネイティブ-linuxapp-gccのgccコンパイルdpdkエラー:そのような命令はありませんvextracti128

出力をインストールします

== 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)force-avx2をgcc -mno-avx2で強制します。 vextracti128はavx2の機能なので、コンパイラはこの最適化を使用しません。

OR

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をコンパイルしてインストールしました。 [root @ localhost〜]#gcc -v 組み込み仕様を使用しています。 COLLECT_GCC = gccの COLLECT_LTO_WRAPPER =は/ usr/local/libexecに/ GCC/x86_64の-未知のlinux-gnuの/ 4.9.0/LTO-ラッパー 対象:../gcc-:x86_64版 - 未知のlinux-gnuの はで構成します4.9.0/configure --enable-checking = release --enable-languages = c、C++ --disable-multilib スレッドモデル:posix gccバージョン4.9.0(GCC) – TseChun

+0

私はよく分かりませんが、試してみてくださいCFLAGSで 'gcc -mno-avx2'を使ってソフトウェアをコンパイルする –

+0

少し掘り下げてみると、gcc 4.xシリーズがavx/avx2サポートを壊しています。新しいgccをコンパイルする能力がある場合は、gcc-7.xシリーズ –

関連する問題