2009-01-28 7 views
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.Xcode/GCC Verknüpfungsproblem: Datei ist nicht von erforderlicher Architektur

Der Linker Ausgabe sieht wie folgt aus:

Gebäude Ziel „Gemsweeper Mac“ des Projekts „Gemsweeper Mac“ mit der Konfiguration „Debug“

prüfen Abhängigkeiten

Ld "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug/Gemsweeper Mac.app/Contents/MacOS/Gemsweeper Mac" normal i386 
    cd "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac" 
    setenv MACOSX_DEPLOYMENT_TARGET 10.4 
    /Developer/usr/bin/g++-4.0 -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk "-L/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug" -L/Developer/SDKs/MacOSX10.4u.sdk/usr/local/lib -L/opt/local/lib "-F/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug" -F/Users/adriangrigore/Library/Frameworks -F/Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks -filelist "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/Gemsweeper Mac.LinkFileList" -mmacosx-version-min=10.4 -L/opt/local/lib -L/Users/adriangrigore/wxwidgets-manual/wxMac-2.8.9/lib /opt/local/lib/libboost_system-mt.a /opt/local/lib/libboost_program_options-mt.a /opt/local/lib/libboost_thread-mt.a -arch ppc -arch i386 -framework IOKit -framework Carbon -framework Cocoa -framework System -framework QuickTime -framework OpenGL -framework AGL /Users/adriangrigore/wxwidgets-manual/wxMac-2.8.9/lib/libwx_mac-2.8.a -framework WebKit -lwxexpat-2.8 -lwxtiff-2.8 -lwxjpeg-2.8 -lwxpng-2.8 -lz -lpthread -liconv -framework SDL -framework Cocoa -o "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug/Gemsweeper Mac.app/Contents/MacOS/Gemsweeper Mac" 
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/main.o, file is not of required architecture 
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/variousfunctions-xcode.o, file is not of required architecture 
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/ParticleLayers.o, file is not of required architecture 
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/SDLMain.o, file is not of required architecture 
ld warning: in /opt/local/lib/libboost_system-mt.a, file is not of required architecture 
ld warning: in /opt/local/lib/libboost_program_options-mt.a, file is not of required architecture 
ld warning: in /opt/local/lib/libboost_thread-mt.a, file is not of required architecture 
ld warning: in /opt/local/lib/libz.dylib, file is not of required architecture 
ld warning: in /opt/local/lib/libiconv.dylib, file is not of required architecture 
ld: in /opt/local/lib/libz.1.dylib, file is not of required architecture for architecture ppc 
collect2: ld returned 1 exit status 
ld warning: duplicate dylib /opt/local/lib/libz.1.dylib 
ld warning: duplicate dylib /opt/local/lib/libiconv.2.dylib 

Ich bin ganz neu auf die Mac-Plattform, so würde jede Hilfe sehr geschätzt werden!

Danke,

Adrian

Antwort

2

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

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

2

Klingt wie Sie für Mac redownload oder umbauen Schub benötigen. 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 Bibliotheken und dergleichen), 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. http://www.boost.org/doc/libs/1_37_0/more/getting_started/unix-variants.html gibt Ihnen ein paar Informationen über 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.

0

Deinstallieren und erneut installieren zlib und libiconv (plus ein Dutzend andere abhängige libs) mit sudo port xxx install + universal geholfen. Danke für deine schnelle Antwort! :-)

+0

4 Jahre Geparden Tempo.in der Tat ist es für andere Peeps mit Asio in der Zukunft. Ich lief über das gleiche Problem und es dauerte 1 Tag oder mehr, um das verwirrte Problem zu lösen. jetzt sein ssl Fehler. hast du den ssl server versucht. –

0

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

Dazu gehört das Setzen von xcode auf 'Native Architecture of Build Machine', 'Build Active Architecture Only' und 'Valid Architectures', abhängig von Ihrer Xcode-Version. aber reinige alle möglichen architektonischen Varianten.

und das ist, weil Boost mit der Standardeinstellung ./b2 install wird nur die native Architektur erhalten.

Versuch erneut zu installieren Schub mit ./b2 install toolset=intel

eine mögliche (und unerprobte) Lösung wird zweimal Schub zu bauen.

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

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

Verwandte Themen