#erreur “jeu d'instructions SSE2 pas activé” lorsque y compris <emmintrin.h>
Im essayant de compiler en C++ code avec cmake et de faire qui utilise le comprennent <emmintrin.h>
et obtient l'erreur:
#error "SSE2 instruction set not enabled"
J'ai un processeur Intel Celeron Dual Core processeur avec un Linux (Mint) système (Noyau 3.5).
Selon Wikipédia, le Celeron Dual Core est capable d'exécuter des instructions SSE2 et le sse2 indicateur est défini selon /proc/cpuinfo
. Mais l'auteur de cette question mentionne limitée de l'ESS support de la technologie Intel Celeron.
J'ai déjà essayé d'utiliser de l'ESS dans les options du compilateur dans mon CMakeLists.txt
:
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-msse -msse2 -msse3")
..mais rien n'a changé. cmake .
fonctionne très bien mais make
donne le message d'erreur ci-dessus.
Dois-je changer les paramètres dans CMakeLists.txt ou ne le Celeron Dual Core tout simplement pas (entièrement) de support SSE2?
Oui, mon BIOS n'a pas de paramètres de l'activation ou de la désactivation de l'ESS.
cmake et n'a pas de carte un-à-un. Si vous utilisez makefile pour faire, pls assurez-vous qu'il a obtenu ces SSE2 drapeaux.
Avez-vous essayé
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -msse3")
(noter la position de l'guillemets) ou set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")
?set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")
fonctionne! Merci!!!! Avez-vous une idée pourquoi? Et s'il vous plaît poster un commentaire en tant que réponse afin que je puisse l'accepter...OriginalL'auteur Suzana | 2013-05-07
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler
La
CMAKE_C_FLAGS
sont appliqués à C de fichiers, et à partir de votre poste de C++ tag, je suppose que vous êtes de la compilation de fichiers C++, d'où la nécessité de changerCMAKE_CXX_FLAGS
à la place.Que pour le positionnement des guillemets; dans votre version d'origine, vous étiez réglage
CMAKE_C_FLAGS
pour contenir 2 entrées distinctes, la première étant la valeur de départ deCMAKE_C_FLAGS
et la seconde la chaîne"-msse -msse2 -msse3"
.CMake détient des listes de ce type de semi-colon entrées séparées. Dans le cas de
CMAKE_<lang>_FLAGS
, invariablement, elles sont une valeur unique composé d'une chaîne de caractères contenant tous les drapeaux.Est-il un portable moyen de le faire?? Surtout dans moderne CMake, à l'instar de la cible où vous n'êtes pas censé être de la manipulation de la global CXX drapeaux. Cela semble être la mauvaise façon de le faire maintenant des jours.
OriginalL'auteur Fraser