Wie könnte eine aktuelle Version von GCC (4.6) zusammen mit Qt unter Mac OS verwendet werden?

9

Mein Problem hängt mit dem hier besprochenen zusammen:

Is gibt es eine Möglichkeit, dass OpenMP auf Qt Spanned Threads arbeiten kann?

Beim Versuch, mein Qt-basiertes Programm unter Mac OS mit einer OpenMP-Klausel in einem sekundären Thread auszuführen, ist es abgestürzt. Nach dem Surfen im Internet verstehe ich jetzt, dass es auf einen Fehler in der älteren Version (4.2) von gcc von Apple zurückzuführen ist.

Dann habe ich die neueste 4.6-Version von gcc von Ссылка heruntergeladen und versucht, das Projekt zu kompilieren, aber ich habe die folgenden Fehler vom g ++ - Compiler bekommen :

unerkannte Option '-arch' unerkannte Option '-Xarch_x86_64'

Ich habe gelernt, dass dies daran liegt, dass dies Optionen sind, die nur vom individuell konfigurierten Apple-gcc-Compiler interpretiert werden können, aber nicht vom Standard-gcc.

Könnte mir jemand bitte helfen, könnte ich dieses Problem überwinden und g ++ 4.6 für die Verwendung mit Qt konfigurieren, um eine fehlerfreie OpenMP-Unterstützung zu erhalten? Ich gebe zu, dass ich ein Newbie unter Mac OS-Plattform in Bezug auf Compiler und Programmierung bin und möchte meinen Code von Visual Studio-Qt-Umgebung portieren.

Vielen Dank im Voraus!

    
RHeged 06.06.2011, 13:36
quelle

4 Antworten

2

Wenn Sie keine Angst haben, Ihre Qt-Installation zu stören, dann ändern Sie den Eintrag QMAKE_CFLAGS_X86_64 in ~ / QtSDK / Desktop / Qt / 4.8.1 / gcc / mkspecs / common / g ++ - macx.conf.

Ersetzen Sie '-Xarch_x86_64' durch '-arch x86_64'.

    
bgp2000 04.09.2012 10:38
quelle
1

Sie können Ihre Nicht-Apple-gcc v4.6 verwenden und eine Binärdatei für jede Architektur kompilieren, die Sie erstellen möchten (verwenden Sie --target = $ {ARCH} sollte für i386 und x86_64 in Ordnung sein). Dann, sobald Sie eine Binärdatei für jede der Architekturen verwenden Lipo wie folgt: %Code% Dadurch wird eine fette Binärdatei (auch bekannt als Universal Binary) namens binary_universal aus binary_32bit und binary_64bit erstellt.

Oder Sie könnten clang / llvm anstelle von gcc verwenden, was wahrscheinlich nicht den von Ihnen beschriebenen Fehler hat und (falls über die Apple-Entwickler-Tools geliefert) in der Lage sein sollte, universelle Binärdateien direkt zu kompilieren.

    
Joe Boo 20.06.2011 18:31
quelle
0

Sie sollten qmake mit der entsprechenden Option -spec ausführen, um beispielsweise gcc46 auf freebsd zu verwenden, damit qmake ausgeführt werden kann: qmake --spec = freebsd-g ++ 46

    
DimanNe 22.06.2011 08:48
quelle
0

Lipo kann tatsächlich verwendet werden, um mehrere Objektdateien zu einer "fetten" Objektdatei zusammenzufassen, tatsächlich stellt sich heraus, dass dies genau der Apples Compiler ist. Ihr GCC-Compiler ist eigentlich ein Treiber, der verschiedene Architekturen auf den entsprechenden Compiler für die Architektur abbildet und dann die Objekte mit Lipo zusammenfügt.

siehe: Ссылка

Hier ist die Quelldatei für diesen Treiber:

Ссылка

Alles, was man tun muss, um eine neue Version von GCC zu erhalten, ist, diesen Treiber zu modifizieren und ihn auf einen Skript-Wrapper für Ihre Version von gcc zu verweisen, der die passenden Flags für die gegebene Architektur hinzufügt Übergibt dann alle anderen Argumente. Etwas wie das:

#! / bin / sh

/opt/local/bin/gccmp-4.6 -m32 $ @

und

#! / bin / sh

/opt/local/bin/gcc-mp-4.6-m64 $ @

Hier ist ein Link, der darüber spricht, wie es gemacht wird, und stellt ein cmake-Projekt bereit, um die Macports-Version von GCC leicht zu reparieren und das -arch-Flag für die zwei Intel-Architekturen zu unterstützen:

Ссылка

    
John Bowers 02.03.2012 17:05
quelle

Tags und Links