2011-03-23 12 views
8

Seguí these instructions sobre cómo obtener el 10.4 SDK trabajando con PPC después de actualizar a XCode 4. Puedo compilar, pero se produce un error en el tiempo del enlace.No se pudo vincular ppc después de actualizar a XCode 4

Como una arruga agregada, no estoy usando XCode per se, pero la cadena de herramientas gcc que viene con él. (Esto es parte de un gran proyecto multiplataforma que utiliza archivos make.)

Aquí es un makefile de ejemplo:

CXX=g++-4.0 
CXXFLAGS=-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 

helloworld: helloworld.o 
    $(CXX) $^ -o [email protected] $(CXXFLAGS) 

con un helloworld.cpp:

#include <stdio.h> 

int main(void) { 
    printf("hello world \n"); 
    return 0; 
} 

y aquí está su salida:

$ make 
g++-4.0 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -c -o helloworld.o helloworld.cpp 
g++-4.0 helloworld.o -o helloworld -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 
ld: in /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o, in section __TEXT,__text reloc 1: sectionForNum(4) section number not for any section for architecture ppc 
collect2: ld returned 1 exit status 
lipo: can't open input file: /var/folders/NK/NK2TdejFFfOupEszIr4fG++++TM/-Tmp-//ccryAbut.out (No such file or directory) 
make: *** [helloworld] Error 1 

Por cierto, este archivo MAKE exacto funciona bien en un sistema XCode 3.

+0

De acuerdo, respondí su pregunta nuevamente, espero que cualquiera de las dos soluciones pueda resolver su problema. – Mecki

Respuesta

5

dado que está utilizando la línea de comando gcc (paquete de desarrollo de Unix), no se utilizará el CCG de /Developer o /Xcode3, pero el uno de /usr, que no he tocado mi descripción original. Para restaurar el soporte PPC a la línea de comando GCC, deberá hacer al menos lo que jas señaló in this answer. O alterar su Makefile para usar el gcc de /Developer lugar (creé su helloworld.cpp en el directorio de trabajo actual antes de ejecutar estos comandos):

$ /Developer/usr/bin/g++-4.0 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -c -o helloworld.o helloworld.cpp 
$ /Developer/usr/bin/g++-4.0 helloworld.o -o helloworld -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 
ld: warning: object file compiled with -mlong-branch which is no longer needed. To remove this warning, recompile without -mlong-branch: /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o 
ld: warning: object file compiled with -mlong-branch which is no longer needed. To remove this warning, recompile without -mlong-branch: /Xcode3/usr/bin/../lib/gcc/powerpc-apple-darwin10/4.0.1/crt3.o 
$ ./helloworld 
hello world 

Puede ignorar los dos advertencias. Lamentablemente, GCC 4.0 no admite el -mno-long-branch, que sería necesario para evitar ramas largas.

+0

Usando '/ Developer/usr/bin/g ++ - 4.0' funciona. Sin embargo, [la solución se vinculó a] (http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5- sdk-support-to-xcode-4/5380923 # 5380923) no ayuda cuando se usa '/ usr/bin/g ++ - 4.0'. Mi solución fue enlazar '/ usr/bin/g ++ - 4.0' a'/Developer/usr/bin/g ++ - 4.0'. De todos modos, ¡gracias por ponerme en el camino correcto! – paleozogt

Cuestiones relacionadas