2009-01-28 5 views
8

Estoy tratando de portar un proyecto de Windows que incluye impulsar 1.37 y wxwidgets a la Mac. Compila bien, pero el enlazador me da un error de "archivo no es de arquitectura necesaria para la arquitectura ppc" para libz.1.dylib y el mismo mensaje como advertencia para algunas otras bibliotecas. También recibo una advertencia de "duplicate dylib" para libz.1.dylib.Problema de enlace de Xcode/GCC: el archivo no es de arquitectura requerida

La salida enlazador se ve así:

Edificio objetivo “Gemsweeper Mac” del proyecto “Gemsweeper Mac” con la configuración “depuración”

Dependencias Comprobación

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 

Estoy bastante nuevo a la plataforma Mac, ¡así que cualquier ayuda sería muy apreciada!

Gracias,

Adrian

Respuesta

2

De los mensajes que tienes, la mayoría de Gemsweeper Mac y libboost se han compilado con solo ppc como arquitectura. Debe configurar Xcode para generar binarios universales y probablemente recompile libboost a través de MacPorts. Los MacPorts recientes tienen un objetivo "universal" que podría ayudar, aunque si no planea ejecutarlo en ppc, solo tiene que volver a compilarlo.

Parece que necesita recompilar zlib y libiconv también.

2

Suena como que necesita volver a descargar o reconstruir impulso para Mac. Y lo que dylib es lo que necesita hacer eso. En términos simples, solo necesita reinstalar las bibliotecas.

Con boost no es necesario volver a descargar todo de nuevo, las fuentes en sí son multiplataforma, son solo los binarios (las bibliotecas y demás) los que cambian de una plataforma a otra. Lo más probable es que ya haya descargado todas las fuentes, por lo que solo tendrá que reconstruir la biblioteca desde las fuentes. http://www.boost.org/doc/libs/1_37_0/more/getting_started/unix-variants.html le brinda información acerca de la construcción de impulso usando bjam. Sé en las ventanas que tienen binarios precompilados, pero no puedo ver nada al respecto en el sitio web de impulso para Mac.

0

Desinstalando y reinstalando zlib y libiconv (más una docena de otras librerías dependientes) con el puerto sudo xxx install + universal ayudado. ¡Gracias por su respuesta rápida! :-)

+0

4 años es ritmo guepardo.de hecho, es para otros que usan asio en el futuro. Me encontré con el mismo problema y tardé 1 día o más en resolver el problema. ahora es su error ssl. ¿Has probado el servidor SSL? –

0

necesita apuntar a la arquitectura nativa, no dos ... la de 'universal'.

que implica establecer xcode en 'Arquitectura nativa de la máquina de compilación', 'Generar arquitectura activa solamente' y 'Arquitecturas válidas' según su versión de xcode. pero limpia todas las variantes arquitectónicas posibles.

y eso es porque impulsar con el valor predeterminado ./b2 install solo obtendrá la arquitectura nativa.

intente volver a instalar impulso con ./b2 install toolset=intel

una posible (y no probado) la solución es la construcción de impulso doble.

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

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

Cuestiones relacionadas