Xcode / GCC-Verknüpfungsproblem: Datei ist nicht von erforderlicher Architektur

8

Ich versuche, ein Windows-Projekt, das boost 1.37 und wxwidgets enthält, auf den Mac zu portieren. Es kompiliert ok, aber der Linker gibt mir eine Fehlermeldung "Datei ist nicht von der erforderlichen Architektur für die Architektur ppc" für libz.1.dylib und die gleiche Nachricht wie eine Warnung einige andere Bibliotheken. Ich bekomme auch eine "doppelte Dylib" Warnung für libz.1.dylib.

Die Linker-Ausgabe sieht folgendermaßen aus:

Bauziel "Gemsweeper Mac" vom Projekt "Gemsweeper Mac" mit Konfiguration "Debug"

Abhängigkeiten prüfen

%Vor%

Ich bin ziemlich neu in der Mac-Plattform, also würde jede Hilfe sehr geschätzt werden!

Danke,

Adrian

    
Adrian Grigore 28.01.2009, 08:30
quelle

4 Antworten

2

Von den Nachrichten, die Sie haben, wurden die meisten von Gemsweeper Mac und libboost nur mit ppc als Architektur kompiliert. Sie sollten Xcode konfigurieren, um universelle Binärdateien zu generieren und libboost wahrscheinlich über MacPorts neu zu kompilieren. Neuere MacPorts haben ein "universelles" Ziel, das helfen könnte, obwohl, wenn Sie nicht vorhaben, es auf ppc auszuführen, Sie es nur neu kompilieren müssen.

Sie scheinen auch zlib und libiconv neu kompilieren zu müssen.

    
Keltia 28.01.2009, 08:44
quelle
2

Klingt so, als müssten Sie den Boost für Mac neu herunterladen oder neu erstellen. Und was auch immer Dylib ist, musst du tun. In einfachen Worten müssen Sie nur die Bibliotheken neu installieren.

Mit boost müssen Sie das Ganze nicht noch einmal herunterladen, die Quellen selbst sind multiplatform, es sind nur die Binaries (die libs und so), die sich von Plattform zu Plattform ändern. Wahrscheinlich haben Sie bereits alle Quellen heruntergeladen, also müssen Sie die Bibliothek nur aus den Quellen neu erstellen. Ссылка gibt dir einige Informationen über den Boost mit bjam. Ich weiß, unter Windows haben sie vorkompilierte Binärdateien, aber ich kann nichts darüber auf der Boost-Website für Mac sehen.

    
Ray Hidayat 28.01.2009 08:36
quelle
0

Deinstallieren und erneutes Installieren von zlib und libiconv (plus ein Dutzend anderer abhängiger Bibliotheken) mit sudo port xxx install + universal half. Danke für deine schnelle Antwort! : -)

    
Adrian Grigore 28.01.2009 14:22
quelle
0

Sie müssen die native Architektur anvisieren, nicht zwei .. die von "universal".

Dazu muss xcode abhängig von Ihrer xcode-Version auf "Native Architektur der Build-Maschine", "Nur aktive Architektur erstellen" und "Gültige Architekturen" eingestellt werden. aber reinige alle möglichen architektonischen Varianten.

und das ist, weil Boost mit dem Standard ./b2 install nur die native Architektur bekommt.

versuche, Boost mit ./b2 install toolset=intel

erneut zu installieren

Eine mögliche (und noch nicht erprobte) Lösung baut zweimal auf.

intel ./b2 install --prefix=/usr/local/x64 toolset=intel

natives ./b2 install --prefix=/usr/local/ppc

    
Gabe Rainbow 29.01.2013 17:56
quelle

Tags und Links