Ich habe gerade auf OS X 10.8 "Mountain Lion" aktualisiert und ich bereute, dass ich das getan habe.OS X 10.8, llvm, OpenMP mit CMake
Ich bin nicht mehr in der Lage, meinen (einfachen) parallelen Code zu erstellen, der OpenMP verwendet.
Durch den Blick hier und da habe ich verstanden, dass Apple nicht mehr 'gcc', sondern 'llvm' verwendet - sehr wahrscheinlich aufgrund von Lizenzproblemen. Leider unterstützt 'llvm' (noch?) Nicht OpenMP.
Ich kann nicht glauben, dass viele auf OpenMP basierende Programme unter OS X nicht mehr laufen werden. Meine Frage ist also: Wie kann ich OpenMP in Mountain Lion aktivieren?
Nachdem ich die ausgezeichnete Antwort von Hristo Iliev gelesen habe, glaube ich, dass ich mehr vermisse, als ich ursprünglich dachte.
Ich verwende keinen XCode. Das Gebäude basiert auf CMake und make/gcc. Gestern habe ich gcc 4.2 über Macports installiert, aber - wie heute - ist mein Code immer noch in Quellform, weil ich aus irgendwelchen Gründen die Kompilierung nicht auf gcc umstellen kann (gleiche Fehler wie bei OpenMP).
Das Problem besteht nun darin, dass CMake den llvm-Compiler verwendet. In der Wurzel CMakeLists.txt habe ich die folgenden zwei Zeilen:
set(CMAKE_C_COMPILER "/opt/local/bin/gcc-apple-4.2")
set(CMAKE_CXX_COMPILER "/opt/local/bin/gcc-apple-4.2")
und habe ich auch noch zwei Variablen Umgebungen:
export CXX=/opt/local/bin/gcc-apple-4.2
export CC=/opt/local/bin/gcc-apple-4.2
Wenn CMake versucht OpenMP (FIND_PACKAGE (OpenMP)) Ich zu finden bekommen die folgende Ausgabe:
-- The compiler is /opt/local/bin/gcc-apple-4.2
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
[...]
CMake Error at /opt/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
Could NOT find OpenMP (missing: OpenMP_C_FLAGS OpenMP_CXX_FLAGS)
Call Stack (most recent call first):
/opt/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
/opt/local/share/cmake-2.8/Modules/FindOpenMP.cmake:159 (find_package_handle_standard_args)
demo/CMakeLists.txt:8 (FIND_PACKAGE)
ich versuchte /opt/local/bin/gcc-apple-4.2
manuell ausführen und es scheitert aufgrund eines fehlenden libgomp.
Grüße
Sie können einfach gcc auf 10.8 installieren: http://StackOverflow.com/questions/9353444/how-to-use-install-gcc-on-mac-os-x-10-8-xcode-4-4 –
Ich habe diese Frage gefunden, aber es war mit der Installation von Befehlszeilentools verbunden. Jetzt habe ich die Antwort auf die Installation des echten gcc gesehen. Vielen Dank. –
Sie mussten GCC 4.2 nicht von Macports hinzufügen, da es mit den XCode-Befehlszeilenwerkzeugen geliefert wird. Sie müssen nur [zusätzlich über die GUI installieren] (http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html). Da Sie XCode jedoch nicht verwenden, würde ich Ihnen wärmstens empfehlen, Ihr eigenes GCC 4.7.2 zu erstellen - das Neueste und das Größte mit Unterstützung für OpenMP 3.1-Funktionen :) –