2012-02-04 30 views
10

Tôi gặp sự cố với lỗi này: "Bộ chỉ lệnh SSE chưa được bật". Làm thế nào tôi có thể tìm ra điều này?Bộ chỉ lệnh SSE không được bật

Tôi có ACER i7, Ubuntu 11.10, vui lòng bất kỳ ai có thể giúp tôi?

Mọi trợ giúp sẽ được đánh giá cao!


Cũng chạy:

sudo cat /proc/cpuinfo | grep flags 

Cung cấp:

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 

Trên thực tế tôi đã cố gắng để cài đặt gazebo-1.0.0-RC2-x86_64, và nhận được lỗi này.

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

Tôi đã có tùy chọn này trong cmakefile tôi

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() 
+3

Bạn quên đề cập đến những gì bạn đang cố gắng làm gì khi bạn nhận được thông báo lỗi. –

+7

Thử chuyển '-msse' sang GCC. '-msse2',' -msse3' hoặc bất kỳ thứ gì bạn cần. – Mysticial

+2

Bạn có thử cờ gcc -march = native hoặc -msse2/-msse3/-mssse3/-msse4.1 không? – Krystian

Trả lời

6

Một trong kiểm tra tập tin tiêu đề của bạn để đảm bảo rằng SSE được kích hoạt. Có vẻ như các câu lệnh if của bạn không hoạt động.

Nếu bạn thêm -march=native, nên chọn khung và cờ CPU tốt nhất để biên dịch dựa trên bộ xử lý của bạn hoặc bạn có thể sử dụng rõ ràng -march=corei7 -mavx -mpclmul, hữu ích cho distcc. Ngoài ra, -mfpmath=sse/-mfpmath=387 sẽ yêu cầu trình biên dịch tạo các chỉ lệnh SSE/x87 cho phép toán dấu chấm động. Tùy thuộc vào bộ vi xử lý của bạn, hoặc có thể nhanh hơn, nhưng tôi nghĩ rằng bộ vi xử lý Intel thường tốt hơn ở SSE.

Nếu bạn muốn kiểm tra xem gcc nào đang bật bằng cách sử dụng cờ gốc chạy gcc -march=native -Q --help=target -v.

1

tôi chỉ xây dựng này trên FreeBSD bằng cách thêm này đến "Makefile" trong /usr/ports/audio/soundtouch:

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

Tôi hy vọng phần còn lại của "phonon-GStreamer" plugins biên dịch với điều này.

2

Tôi gặp lỗi tương tự và tôi nghĩ mình đã tìm được giải pháp phù hợp!

Vấn đề là bạn được bao gồm emmintrin.h. Tôi làm giống vậy. Hơn thế nữa nếu tôi định nghĩa SSE2, SSEMMX trước bao gồm cả tập tin này tôi đã nhận được thông báo sau: cảnh báo: "SSE2" định nghĩa lại [kích hoạt theo mặc định]

Vì vậy, tôi đã cố gắng để điều tra nơi SSE2 được xác định và/hoặc sử dụng tôi thấy rằng tập tin này được bao gồm bởi x86intrin.h. Vì vậy, bao gồm tập tin này và theo các -msse * cờ các tập tin * intrin.h thích hợp sẽ được bao gồm tự động!

Nó phù hợp với tôi (g ++ 4.7.2-5).

Tôi hy vọng tôi có thể giúp đỡ!

+0

hoạt động như một cảm ơn –