Mac Big Sur XCode

Googlespoon

Enthusiast
Thread Starter
Mitglied seit
23.03.2014
Beiträge
855
Hi,

Ich hab seit neuestem Zugriff auf einen neuen Mac mit M1 Chip. Nach dem ersten eingewöhnen hab ich auch schon Xcode installiert, habe aber ein Problem. Und zwar läuft OpenMP nicht.
(also ich versuche auf dem Mac in C++ Multithread Anwendungen zu programmieren).
Aber er erkennt das #include <omp.h> nicht. Ich hab schon eine Anleitung versucht und die libomp mit homebrew installiert aber auch das geht irgendwie nicht.

Kann mir da zufällig jemand helfen?
Ist ein recht spezielles Problem aber ich bin leider auch der totale MacOS Noob
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
auf stackoverflow gibts doch einige Threads zu dem Thema. Bist du da nicht weitergekommen ?

e.g.: click
 
Wo hast du homebrew hin installiert? Mir war so das es bei M1 Geräten in ne andere Directory sollte
Äh ja gute frage, keine Ahnung. Ich hab den Befehl von der Website ins Terminal abgetippt und gewartet bis es fertig installiert war.
Ich hab aber auch von dem Mac Dateisystem absolut keine Ahnung. Mir fehlt da echt der File Explorer von Windows. Hab auch versucht diesen /local/bin Ordner zu suchen, aber dieser Finder sagt auch, es gibt so einen Ordner nicht.

auf stackoverflow gibts doch einige Threads zu dem Thema. Bist du da nicht weitergekommen ?
Um den compiler hab ich mich tatsächlich noch gar nicht gekümmert, da ja schon Xcode die ganze Zeit im Code behauptet, es kennt omp.h nicht, das ist ja noch ne Stufe vor dem Compiler und da wollte ich erst das machen, aber weiß jetzt auch gar nicht ob homebrew überhaupt richtig installiert ist.
 
Jo, ich hab’s auch nochmal alles nachgeguckt, also es ist definitiv in dem Ordner wo es wohl hingehört (opt/homebrew/...)
wenn ich das im Code jetzt auch so angebe als “#include “/opt/homebrew/.../omp.h” erkennt XCode das tatsächlich auch.
ist zwar deutlich umständlicher als einfach #include <omp.h> aber schonmal besser als nichts.

Nur steh ich jetzt noch vor dem Problem dass ich es eigentlich gerne als include <omp> hätte, da der Weg über den Dateipfad doch schon extrem unpraktisch für das Programmieren ist, da ja nicht jeder die omp file an genau dieser Stelle hat, dazu kommt aber auch noch, dass der Compiler das nicht kann. Ich kriege hier auch nicht die Fehlermeldung das omp.h not found, sondern eine in der steht: undefined symbols for architecture arm64.
also er erkennt jetzt zwar die omp.h file auf diesem Umweg, aber kann wohl nicht umgehen, da er zb beim Kompilieren die Befehle wie omp_get_time nicht kennt.
‘scheint hier jetzt an der ARM Architektur zu liegen.

ich fühle mich hier langsam auch einfach nur noch richtig dumm weil ich es entweder nicht sehe oder nicht verstehe x.x
 
ich guck mir das heut Abend mal an wenn ich die Zeit finde und sag dir bescheid.
 
Also ich habs jetzt hingekriegt das XCode mit der openMP Library umgehen kann.
#include "/opt/homebrew/.../omp.h" ist zwar unschön, funktioniert aber.

Jetzt kommt aber das Problem, dass es beim kompilieren weiterhin einen Fehler gibt, und zwar das mit dem Architketurclash "undefined symbols for architecture arm64"
Für mich nicht ersichtlich warum, da OpenMP ja auch für ARM funktionieren soll
 
OK, habs irgendwie hingekriegt!
Da ich es selber hasse wenn sowas trotz Ergebnis ungelöst bleibt, schreib ich es hier mal hin falls jemand ein gleiches problem haben sollte.

Es lag an dem Clang compiler von Apple. Der ist einfach sch**** und kann nix.
Hab erst mit brew install llvm llvm installiert, dann brew install libomp.
Das hilft dann noch nicht viel, da immer noch clang benutzt wird.

Mit g++ (gcc) und dann tab zeigt das terminal einem zwei Varianten an (Zeitpunkt jetzt sind es g++ und g++-11)
g++ ist dabei apples clang compiler, 11 aber ist der von Homebrew.
Zum kompilieren also einfach g++-11 -fopenmp main.cpp und alles klappt wunderbar und lässt sich auch ausführen.

Damit kann man im Sourcecode auch #include <omp.h> schreiben und es funktioniert. Nur zeigt einem hier xcode immer wieder alles als Fehler an, also zum programmieren nicht ganz geeignet,
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh