Xcode / GCC reliant problème: le fichier n'est pas nécessaire de l'architecture
Je suis en train de le port d'un projet windows qui inclut boost 1.37 et wxwidgets pour le Mac. Il compile ok, mais l'éditeur de liens me donne une "le fichier n'est pas requis pour l'architecture de l'architecture ppc" erreur de libz.1.dylib et le même message comme un avertissement quelques autres bibliothèques. Je reçois aussi un "double dylib" avertissement pour libz.1.dylib.
L'éditeur de liens de sortie ressemble à ceci:
Bâtiment cible “Gemsweeper Mac” de projet “Gemsweeper Mac” avec la configuration “Debug”
La Vérification Des Dépendances
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
Je suis assez nouveau dans le Mac plattform, de sorte que toute aide serait grandement appréciée!
Merci,
Adrian
OriginalL'auteur Adrian Grigore | 2009-01-28
Vous devez vous connecter pour publier un commentaire.
À partir des messages que vous avez, plus de Gemsweeper Mac et libboost ont été compilés avec seulement ppc comme l'architecture. Vous devez configurer Xcode pour générer des binaires universels et probablement recompiler libboost par MacPorts. Récente MacPorts ont un "universel", objectif qui pourrait aider à bien que si vous n'avez pas l'intention de l'exécuter sur ppc, vous obtenez tout simplement recompiler.
Vous semblez avoir besoin de recompiler la librairie zlib et libiconv.
OriginalL'auteur Keltia
Sons comme vous avez besoin de télécharger à nouveau les ou la reconstruction de coup de pouce pour Mac. Et quelle que soit dylib est que vous devez le faire. En termes simples, vous avez vraiment besoin de réinstaller les bibliothèques.
Avec le coup de pouce que vous n'avez pas besoin de télécharger à nouveau le tout nouveau, les sources elles-mêmes sont multiplateforme, c'est juste les fichiers binaires (les libs et exemple), le changement de plate-forme à plate-forme. Les Chances sont que vous avez déjà téléchargé toutes les sources, de sorte que vous aurez juste besoin de reconstruire la bibliothèque à partir des sources. http://www.boost.org/doc/libs/1_37_0/more/getting_started/unix-variants.html vous donne quelques informations sur la construction de boost à l'aide de bjam. Je sais que sur windows, ils ont des binaires précompilés, mais je ne vois rien à ce sujet sur le site web de boost pour Mac.
OriginalL'auteur Ray Hidayat
De désinstaller et re-installer zlib et libiconv (plus d'une douzaine d'autres libs) avec sudo port xxx installer +universel aidé. Merci pour votre réponse rapide! 🙂
OriginalL'auteur Adrian Grigore
vous devez cibler l'architecture native, pas deux.. que de "universelle".
qui implique la mise en xcode pour Native de l'Architecture de la Machine de compilation', 'Build Active Seulement l'Architecture" et "Valide les Architectures' en fonction de votre xcode version. mais le propre de tous les possibles variantes architecturales.
et c'est en raison de pouce avec la valeur par défaut
./b2 install
obtenez seulement de l'architecture native.essayez de ré-installation de boost avec
./b2 install toolset=intel
un possible (et prévenus) la solution est la construction de boost à deux reprises.
intel
./b2 install --prefix=/usr/local/x64 toolset=intel
natif
./b2 install --prefix=/usr/local/ppc
OriginalL'auteur Gabe Rainbow