#Fehler "SSE2-Befehlssatz nicht aktiviert", wenn <emmintrin.h>
Ich versuche zu kompilieren C++ - code mit cmake und make verwendet die include - <emmintrin.h>
und erhalten die folgenden Fehler machen:
#error "SSE2 instruction set not enabled"
Ich habe einen Intel Celeron-Dual-Core-Prozessor mit Linux (Mint), system (Kernel 3.5).
Laut Wikipedia der Celeron Dual-Core-fähig ist zum ausführen von SSE2-Anweisungen und die sse2-flag gesetzt nach /proc/cpuinfo
. Aber der Autor diese Frage erwähnt eine begrenzte SSE-support des Intel Celeron.
Hab ich auch schon versucht, den SSE compiler-Optionen in meinem CMakeLists.txt
:
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-msse -msse2 -msse3")
..aber nichts änderte sich. cmake .
funktioniert gut, aber make
gibt die oben genannte Fehlermeldung.
Muss ich die Einstellungen ändern in CMakeLists.txt oder hat der Celeron Dual-Core einfach nicht (voll) unterstützt SSE2?
Ja, mein BIOS hat keine Einstellungen zur Aktivierung oder Deaktivierung SSE.
cmake und make nicht anzeigen eins-zu-eins. Wenn Sie generiert makefile für make, pls stellen Sie sicher, es hat diejenigen, die SSE2-flags.
Haben Sie versucht, die
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -msse3")
(beachten Sie die position der Anführungszeichen) oder set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")
?set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")
funktioniert! Danke!!! Haben Sie eine Idee, warum? Und bitte posten Sie Ihren Kommentar als Antwort, damit ich es akzeptieren können...InformationsquelleAutor Suzana | 2013-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie rufen Sie
Den
CMAKE_C_FLAGS
angewendet werden, um die C-Dateien, und aus deinen post ' s C++ - tag, ich denke, du bist kompilieren von C++ - Dateien, daher die Notwendigkeit zu ändernCMAKE_CXX_FLAGS
statt.Als für die Positionierung der Anführungszeichen; in Ihrer ursprünglichen version, wurden Sie die Einstellung
CMAKE_C_FLAGS
zu enthalten, 2 separate Einträge, wird der erste Ausgangswert desCMAKE_C_FLAGS
und der zweite ist der string"-msse -msse2 -msse3"
.CMake hält Listen wie die hier als Semikolon getrennte Einträge. Im Fall von
CMAKE_<lang>_FLAGS
immer Sie einen einzelnen Wert aus einer Zeichenfolge, die alle benötigten flags.Gibt es eine portable Möglichkeit, dies zu tun?? Gerade in der modernen CMake, wie Ziel basierten, wo Sie nicht sein soll, die Manipulation des globalen CXX-flags. Dies scheint der falsche Weg, es zu tun jetzt Tage.
InformationsquelleAutor Fraser