SSE instruction set not enabled

谁说我不能喝 提交于 2019-11-29 13:31:00

问题


I am getting trouble with this error: "SSE instruction set not enabled". How I can figure this out?

I have ACER i7, Ubuntu 11.10, please any one can help me?

Any help will be appreciated!


Also running:

 sudo cat /proc/cpuinfo | grep flags

Gives:

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

Actually i was trying to install gazebo-1.0.0-RC2-x86_64, and getting this error.

/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
...

I already have this option in my 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()

回答1:


One of your header files checks to ensure that SSE is enabled. It appears that your if statements aren't working.

If you add -march=native it should pick the best CPU arch and flags to compile for based on your processor, or you can explicitly use -march=corei7 -mavx -mpclmul, which is useful for distcc. Also, -mfpmath=sse/-mfpmath=387 will tell the compiler to generate SSE/x87 instructions for floating point math. Depending on your processor, either could be faster, but I think Intel processors are usually better at SSE.

If you want to check what gcc is enabling using the native flag run gcc -march=native -Q --help=target -v.




回答2:


I got the same error and I think I've found the proper solution!

The problem is that you are included the emmintrin.h. I did the same. What is more if I defined SSE2, SSE and MMX before including this file I got the following message: warning: "SSE2" redefined [enabled by default]

So I tried to investigate where SSE2 is defined and/or used I found that this file is included by x86intrin.h. So include this file and according to the -msse* flags the proper *intrin.h files will be included automatically!

It works for me nicely (g++ 4.7.2-5).

I hope I could help!




回答3:


I just built this on FreeBSD by adding this to the "Makefile" in /usr/ports/audio/soundtouch :

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

I hope the rest of the "phonon-gstreamer" plugins compile with this.



来源:https://stackoverflow.com/questions/9144545/sse-instruction-set-not-enabled

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!