12

「SSE instruction set not enabled」というエラーで問題が発生しています。どうすればこれを理解できますか?

私はACER i7、Ubuntu 11.10を持っています。誰か助けてください。

どんな助けでも大歓迎です!


また実行中:

 sudo cat /proc/cpuinfo | grep flags

与えます:

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clfl
ush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfm
on pebs bts xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl
vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt xsave avx lahf_lm 
ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid

実際、gazebo-1.0.0-RC2-x86_64 をインストールしようとして、このエラーが発生しました。

/usr/lib/gcc/i686-linux-gnu/4.6.1/include/emmintrin.h:32:3: error: #error "SSE2 
instruction set not enabled"
In file included from /home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/
deps/opende/src/quickstep.cpp:39:0:
/usr/lib/gcc/i686-linux-gnu/4.6.1/include/xmmintrin.h:32:3: error: #error "SSE i
nstruction set not enabled"
/home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/deps/opende/src/quicks
tep.cpp: In function ‘dReal dot6(dRealPtr, dRealPtr)’:
/home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/deps/opende/src/quicks
tep.cpp:537:3: error: ‘__m128d’ was not declared in this scope
...

私のcmakefileにはすでにこのオプションがあります

if (SSE3_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse3")
endif()
if (SSSE3_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -mssse3")
endif()
if (SSE4_1_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse4.1")
endif()
if (SSE4_2_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse4.2")
endif()
4

3 に答える 3

6

ヘッダー ファイルの 1 つで、SSE が有効になっていることが確認されます。if ステートメントが機能していないようです。

追加する場合-march=nativeは、プロセッサに基づいてコンパイルするのに最適な CPU アーキテクチャとフラグを選択する必要があります。または、明示的に使用することもでき-march=corei7 -mavx -mpclmulますdistcc。また、-mfpmath=sse/-mfpmath=387浮動小数点演算用の SSE/x87 命令を生成するようにコンパイラに指示します。プロセッサによっては、どちらの方が速い場合もありますが、通常、SSE では Intel プロセッサの方が優れていると思います。

ネイティブ フラグ run を使用して、gcc が有効にしているものを確認したい場合gcc -march=native -Q --help=target -v

于 2013-02-13T21:39:59.097 に答える
2

同じエラーが発生しましたが、適切な解決策を見つけたと思います!

問題は、emmintrin.h が含まれていることです。私も同じことをしました。さらに、このファイルを含める前にSSE2SSE、およびMMXを定義すると、次のメッセージが表示されました: warning: " SSE2 " redefined [デフォルトで有効]

そこで、SSE2が定義および/または使用されている場所を調査しようとしましたが、このファイルが x86intrin.h に含まれていることがわかりました。したがって、このファイルをインクルードすると、-msse* フラグに従って、適切な *intrin.h ファイルが自動的にインクルードされます!

私にとってはうまく機能します(g ++ 4.7.2-5)。

お役に立てれば幸いです!

于 2014-05-23T23:54:21.847 に答える
1

の「Makefile」にこれを追加して、これを FreeBSD でビルドしました/usr/ports/audio/soundtouch

CC=             gcc46
CXX=            g++46
CPP=            cpp46
CFLAGS+=        -msse

残りの「phonon-gstreamer」プラグインがこれでコンパイルされることを願っています。

于 2014-02-12T21:09:43.657 に答える