¿Cómo podemos restaurar ppc / ppc64, así como el soporte completo del SDK 10.4 / 10.5 para Xcode 4?


Dado que Apple solo envía SDK 10.6 con Xcode4, desarrollar aplicaciones PPC con Xcode4 se volvió imposible. Si bien es posible desarrollar aplicaciones con Xcode4 que también pueden ejecutarse en sistemas 10.5 y tal vez incluso en sistemas 10.4 (seleccionando SDK 10.6, pero deployment target 10.5 o 10.4), solo se ejecutarán en Mac Intel porque necesita al menos SDK 10.5 para crear aplicaciones PPC.

Además, hay algunos casos raros, en los que realmente necesita construir contra un SDK anterior a 10.6 para soporte completo de la plataforma, por ejemplo, si cierta funcionalidad obsoleta ha desaparecido completamente del SDK 10.6, pero tendrá que usarla y el enlace dinámico no siempre es la mejor opción en esos casos. También enlazar con un SDK anterior a veces facilitará el desarrollo, ya que se supone que la funcionalidad no debe usarse, ya que causaría incompatibilidad con versiones anteriores del sistema operativo, no estará disponible y cualquier intento de usarlo de todos modos conduce inmediatamente a errores de compilador o enlazador.

Último pero no menos Apple también ha eliminado el soporte GCC 4.0 de Xcode4, que puede ser necesario para que cierto software se compile correctamente y Apple nunca ha permitido compilar software con GCC 4.2 cuando se usa SDK 10.4, a pesar de que difícilmente creo que esto realmente causaría problemas, después de todo el software construido con GCC 4.2 y SDK 10.6 también puede ejecutarse en Mac OS 10.4 sin ningún problema, siempre y cuando el objetivo de implementación se haya establecido correctamente y no se haya utilizar.

Por supuesto, siempre puede tener una instalación paralela de Xcode3 junto a Xcode4, pero eso significa que debe renunciar a todos los (genial?) nuevas características de Xcode4 y seguir trabajando con el IDE Xcode3 obsoleto. Ciertamente sería mucho mejor si también pudiera administrar todos sus proyectos antiguos dentro del mismo IDE que sus nuevos y beneficiarse de las nuevas características disponibles. No todos los proyectos se pueden hacer 10.6 o Intel solo en el futuro previsible. Además estoy estrictamente en contra de la abolición soporte para plataformas más antiguas antes de lo que sería realmente necesario.

¿Podemos restaurar esta funcionalidad a Xcode4?

Author: Mecki, 2011-03-17

8 answers

La respuesta rápida es: ¡Sí, podemos!

Antes de llegar a la parte "cómo se hace", aquí hay algunas notas sobre mi parche/hack/fix. Desde el principio, los principales objetivos han sido:

  1. Mantenga todas las modificaciones a un mínimo absoluto.
    Queremos mantener las configuraciones de Xcode lo más originales posible.

  2. Por todos los medios, trate de evitar parchear o modificar cualquier archivo.
    Queremos que todos los archivos se mantengan intactos y conserven su original contenido.

  3. Trate de evitar mover o copiar archivos, a menos que sea absolutamente necesario.

Pude mantener todos esos objetivos. Casi todo se hace mediante la creación de enlaces simbólicos. Solo un enlace simbólico existente tuvo que ser reemplazado y lo respaldaremos antes del reemplazo, por si acaso.

Si no es experto en operaciones de terminal, le aconsejo encarecidamente que copie/pegue todos los comandos de terminal de mi respuesta a su terminal, para evitar errores tipográficos. Tenga en cuenta que incluso el espaciado, las citas y especialmente la capitalización pueden ser importantes. Copie / pegue línea por línea, nunca más de una línea a la vez y presione return después de cada línea pegada para ejecutar el comando. Si alguna operación alguna vez le solicita una contraseña, esta será la contraseña del usuario administrador actualmente conectado (sus pulsaciones de teclado no se muestran mientras escribe, esto es normal, no se preocupe, solo siga escribiendo la contraseña y presione volver; vuelva a intentarlo si tuvo un error tipográfico y se le pedirá nuevo).

Prerrequisito

Antes de comenzar, asegúrese de que las siguientes condiciones sean ciertas:

  • Ha iniciado sesión como usuario administrador.
  • Ha iniciado Terminal.app (Aplicaciones / Utilidades) y una ventana de terminal está abierta.
  • Tiene una copia de la imagen de disco Xcode3 (por ejemplo, 3.2.5) y Xcode4 (DMG) o instalador disponible.
  • Si ya tiene instalada alguna de las versiones de Xcode, considere desinstalarla primero, para que pueda comience con una configuración fresca / limpia. Desinstalar Xcode no eliminará sus preferencias, combinación de colores o personalizaciones de enlace de claves. Lo ideal sería comenzar con un sistema que no tiene ninguna versión de Xcode (ni 3 ni 4) instalada actualmente.

Paso 1: Instalación de Xcode3

Importante: No instale el paquete "System Tools" o "Unix Development" de Xcode3.
Si desea instalar "Mac OS X 10.4 SDK" y/o "Documentación" depende de ti. Si se trata de un Xcode3 con SDK de iOS, si los instala o no también depende de usted.

Usted es libre de elegir cualquier carpeta de destino para su instalación. Para esta guía he elegido " /Xcode3", pero no dude en elegir una diferente. Solo asegúrese de alterar todos los comandos de terminal en consecuencia.

El orden de los pasos dados aquí generalmente no es realmente importante, pero le aconsejo encarecidamente que no intercambie el paso 1 y el paso 2. Xcode siempre instala un par de archivos fuera de la carpeta de destino elegida y confía en mí, al final quieres las versiones Xcode4 de esos archivos en tu disco. Al instalar Xcode3 antes de Xcode4, puede estar seguro de que Xcode4 sobrescribirá esos archivos si es necesario. Una vez cambié los pasos 1 y 2 y al final tuve algunos problemas bastante extraños que podrían haber estado relacionados con el orden incorrecto (no puedo decir con seguridad, pero después de reinstalar en el orden correcto, los problemas desaparecieron).

Paso 2: Instalación Xcode4

Elige cualquier paquete que quieras. Instalar " System Tools " es aconsejable, pero no estrictamente necesario (aunque la mayoría de la gente tarde o temprano perderá esa funcionalidad).

De nuevo, siéntase libre de elegir cualquier carpeta de destino que desee. Para esta guía elegí la carpeta de destino normal "/Developer", si toma una diferente, altere todos los comandos de terminal en consecuencia.

Paso 3: Restaurar la compatibilidad con SDK 10.4 / 10.5

Cambie a la ventana de su terminal y ejecute los siguientes comandos:

cd /Developer/SDKs
sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk .
sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk .

Por supuesto, solo ejecute el comando para 10.4 u si también instaló SDK 10.4 en el paso 1.

Esto es suficiente para traer los SDK 10.5 (y posiblemente 10.4) de vuelta a la lista de selección en Xcode4. Inténtalo si quieres. Inicie Xcode4, abra un proyecto, intente cambiar el SDK seleccionado. Eso fue fácil, ¿eh? Asegúrese de cerrar Xcode4 de nuevo (la aplicación, no solo la ventana) antes de continuar con el siguiente paso.

Paso 4: Restaurar GCC 4.0 Apoyo

Si no ha instalado macOS 10.4 SDK o si no planea usarlo, puede omitir este paso de forma segura y continuar con el paso 5.

Para usar SDK 10.4, tendrá que usar GCC 4.0, GCC 4.2 no funcionará. Apple afirma que GCC 4.2 no es compatible con SDK 10.4, bueno, si me preguntas, esto es un engaño. Ya he sobrescrito estas limitaciones más de una vez y nunca hubo el más pequeño problema debido a ello. Sería fácil modificar SDK 10.4 para que Xcode permita debes usar GCC 4.2 para ello, pero mi objetivo era evitar todas las modificaciones de archivos, así que simplemente agregamos soporte GCC 4.0 a Xcode, lo cual también es bueno, porque algunos proyectos realmente dependen de GCC 4.0 (por ejemplo, hay algunos errores en GCC 4.2 que impiden que el código de ensamblaje en línea válido se compile sin errores, mientras que el mismo código se compila sin problemas en GCC 4.0 y GCC 4.4).

Volver a la terminal:

cd /Developer/usr/bin
sudo ln -s /Xcode3/usr/bin/*4.0* .

cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10
sudo ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1 .

Ahora mismo hemos restaurado el soporte completo de GCC 4.0, excepto por el hecho de que GCC 4.0 es todavía no seleccionable en Xcode4. Esto se debe a que Xcode4 ya no tiene ningún complemento de compilador GCC 4.0. Afortunadamente el plug-in Xcode3 también funciona en Xcode4, solo que la posición ha cambiado radicalmente. Apple ahora oculta esos plug-ins en lo profundo de un paquete y solo los plug-ins allí parecen funcionar, colocándolos en su antigua posición parece no tener ningún efecto.

cd /Developer/Library/Xcode/PrivatePlugIns
cd Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins
sudo ln -s "/Xcode3/Library/Xcode/Plug-ins/GCC 4.0.xcplugin" .

Ahora encienda Xcode4 de nuevo, abra un proyecto e intente seleccionar el compilador. Usted debe tener GCC 4.0 de nuevo en la lista. Ahora usted puede realmente ya seleccione SDK 10.4 o 10.5, GCC 4.0 y no debería tener ningún problema para construir un binario PPC. Solo tienes que seleccionar " Otro..." para el "Arquitectura" construir configuración e introduzca manualmente "ppc", a continuación, modifique "Válido Arquitecturas" para incluir también "ppc". Casi hemos terminado, excepto que intentar construir un binario PPC usando GCC 4.2 y SDK 10.5 aún fallará.

Paso 5: Restaurar el soporte de PPC para GCC 4.2

Dado que Apple solo es compatible con Intel plataformas en Xcode4, no todas las herramientas GCC 4.2 se han construido con soporte PPC. Hay una herramienta importante que no tiene soporte PPC, la herramienta se llama " como" y es el Ensamblador GNU. Para compilar binarios ppc / ppc64 con GCC 4.2 necesitamos usar una versión" como " con soporte ppc/ppc64. Este es el único archivo (en realidad también es un enlace simbólico) que primero tenemos que mover a un lado (haciendo una copia de seguridad) antes de que podamos reemplazarlo por un enlace simbólico:

cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s /Xcode3/usr/bin/as .

Paso 6: No hay Paso 6

Eso es todo amigos. Teniendo en cuenta lo fácil que era, se puede imaginar que Apple ciertamente no ha dejado caer SDK 10.4 / 10.5 o ppc / ppc64 o GCC 4.0 apoyo porque esto era una necesidad, dejaron todo eso porque querían dejarlo.

Espero que esta configuración funcione tan bien para usted como lo hace para mí. He sido capaz de compilar todos mis proyectos antiguos en Xcode4 sin ningún cambio importante, excepto por tener que alterar una ruta de búsqueda aquí y allá.

PS:
Puede parecer extraño que respondo a mi propia pregunta aquí, pero ya que he descubierto cómo resolver este problema por mí mismo, me gustaría compartir mi conocimiento con la comunidad, porque creo que esta es una entrada muy valiosa para todos los desarrolladores de macOS. Esta pregunta se ha hecho tantas veces en tantos lugares y hasta ahora nunca he visto a nadie llegar a una solución similar. Compartir la riqueza, difundir el conocimiento y así sucesivamente, ya sabes lo que quiero decir.


Si Todavía Tiene Cuestiones / Preguntas:

Si tiene preguntas adicionales sobre este tema o si todavía tiene problemas para construir sus proyectos antiguos correctamente, haga lo que Stack Overflow ha sido diseñado para: Haga clic en "Hacer pregunta" en la esquina superior derecha de esta página y cree una nueva pregunta. De esa manera, toda la comunidad puede ayudarte a resolver esos problemas, ya que los problemas pueden no estar relacionados directamente (tal vez ni siquiera indirectamente) con este hackeo.

Le recomendaría que mencione el hecho que aplicaste este hack al principio de tu pregunta. Tal vez incluso quieras vincular directamente a esta pregunta, para que la gente, que nunca escuchó de este hack, pueda buscarla fácilmente. De lo contrario, la mayoría de la gente se confundirá cuando mencione SDK 10.4/10.5, PPC o GCC 4.0 en combinación con Xcode4, que oficialmente no admite ninguno de estos. Es posible que obtenga comentarios bastante estúpidos en lugar de respuestas decentes si se olvida de mencionar este truco.

Por favor, absténgase de publicar sus preguntas o problemas aquí, ya sea como respuestas o como comentarios. Publicarlos como respuestas no tiene sentido porque no son respuestas y no hay manera de que la gente pueda responderte, sino que use comentarios, y los comentarios pueden no ofrecer suficiente espacio para una respuesta decente a tu pregunta o una solución decente a tu problema. Y publicarlos como comentarios significa que está limitado a muy poco espacio y rastrear los comentarios de respuesta será difícil, ya que los comentarios no tienen una jerarquía similar a un árbol (además, lo harán todavía ofrecen poco espacio para respuestas/soluciones decentes). Agradecer.

Por supuesto, otros tipos de comentarios, así como mejores respuestas a la pregunta original son siempre bienvenidos; -)

 111
Author: Mecki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-03 17:55:17

Otra forma fácil con solo Xcode4, Xcode3 ya no es necesario.

$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin

EDICIONES:

Para Xcode 4.1,

sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /usr/bin/powerpc-apple-darwin11-cpp-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /usr/bin/powerpc-apple-darwin11-gcc-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /usr/bin/powerpc-apple-darwin11-g++-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-cpp-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-gcc-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-g++-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/powerpc-apple-darwin10 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc

Puede usar gcc-4.2 solo para PowerPC. Y " - isysroot / Developer / SDKs / MacOSX10.6.se requiere la opción SDK", porque 10.7 SDK ya no es compatible con PowerPC.

 15
Author: Kazuki Sakamoto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-21 03:38:01

He reunido toda la información de esta página, Consejos de Mac OS X, splhack.org, y las otras fuentes citadas aquí, y armar un conjunto de scripts de BASH que automatizan el proceso de restauración de PPC y GCC 4.0 soporte utilizando ya sea una instalación de XCode 3 o solo XCode 4 propios archivos de la plataforma del iPhone.

Como siempre, ¡úselo con precaución! y por favor, contribuya con cualquier corrección o mejora. Estos scripts solo han sido probados en mi propio sistema a partir de esta publicación.

Puedes descargar desde GitHub:

 8
Author: Scott Lahteine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-12 04:54:43

Si desea que gcc funcione también desde la línea de comandos, (además de lo anterior) también necesitará:

cd /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s /Xcode3/usr/bin/as .
 4
Author: jas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-21 16:54:46

Esto todavía funciona con Xcode 4.3.2 de la AppStore, la versión donde todo está contenido en un paquete de aplicaciones. Al igual que en la sugerencia original, instale Xcode 3.2.6 primero* y luego descargue Xcode 4 desde la AppStore. Luego haga la siguiente magia de enlace simbólico:

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
ln -s /Developer/Xcode3.2.6/SDKs/MacOSX10.5.sdk .
cd /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/bin/
ln -s /Developer/Xcode3.2.5/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-g* .
mv powerpc-apple-darwin10-llvm-gcc-4.2 powerpc-apple-darwin11-llvm-gcc-4.2
mv powerpc-apple-darwin10-llvm-g++-4.2 powerpc-apple-darwin11-llvm-g++-4.2

Las dos últimas líneas renombran darwin10 a darwin11 en el enlace simbólico - supongo que las futuras versiones de OS X requerirán que esto se actualice según corresponda.

  • Para instalar Xcode 3.2.x en Lion, monta el Xcode imagen de disco, abra Terminal, introduzca los comandos (usando bash, o los comandos equivalentes si ha cambiado su shell predeterminado):

    Export COMMAND_LINE_INSTALL=1 abra " / Volumes / Xcode y iOS SDK / Xcode y iOS SDK.mpkg "

También tendrá que volver a configurar el reloj a una fecha anterior al 31 de marzo de 2012, de lo contrario, los certificados de seguridad no se validarán durante la instalación. Usted puede cambiar con seguridad la fecha de nuevo después de la instalación, obviamente!

 3
Author: Avram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-07 19:35:01

En caso de que alguien necesite restaurar viejos SDK y compilador PPC en Xcode 4.3 y 4.5, este es un script que se me ocurrió. Tenga en cuenta que debe establecer la ruta al paquete de aplicaciones Xcode y la ruta a la instalación de Xcode 3.2.6 al principio del script.

#!/bin/bash

XCODE="/Applications/Xcode45-DP1.app"
XCODE3="/Xcode3"

# restore SDKs
cd "$XCODE/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs"
sudo ln -s "$XCODE3/SDKs/MacOSX10.4u.sdk" .
sudo ln -s "$XCODE3/SDKs/MacOSX10.5.sdk" . 
sudo ln -s "$XCODE3/SDKs/MacOSX10.6.sdk" . 

# restore gcc 4.0
cd "$XCODE/Contents/Developer/usr/bin"
sudo ln -s "$XCODE3/usr/bin/"*4.0* .
sudo ln -s "powerpc-apple-darwin10-g++-4.0.1" "powerpc-apple-darwin11-g++-4.0.1"
sudo ln -s "powerpc-apple-darwin10-gcc-4.0.1" "powerpc-apple-darwin11-gcc-4.0.1"

# restore Xcode option
cd "$XCODE/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins"
sudo ln -s "$XCODE3/Library/Xcode/Plug-ins/GCC 4.0.xcplugin" . 

No es necesario vincular 10.6 SDK si está utilizando Xcode 4.3, ya que viene con uno.

Además, el script no restaura gcc 4.2 ya que hay muchos conflictos de nombres de archivo que lo hacen. Mi objetivo es restaurar el compilador PPC y 4.0 es suficiente para mí.

 2
Author: Stephen Chu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-21 00:23:23

Frédéric Devernay tiene un proyecto de GitHub llamado xcodelegacy que funciona fantástico para mí en Xcode 5.1.1, y necesita muy poco trabajo para ponerlo en marcha, solo un poco de descarga.

Usando su proyecto, he logrado crear binarios universales que contienen arquitecturas ppc e i386 compiladas con el SDK 10.4 usando GCC 4.0, todo desde Xcode 5.1.1 ejecutándose en Yosemite.

Me he verificado que los binarios universales creados funcionan bien en 10.5 Leopard y en Yosemite en sí.

Página de Inicio aquí: http://devernay.free.fr/hacks/xcodelegacy

Proyecto Git hub aquí: https://github.com/devernay/xcodelegacy

 2
Author: Aidan McKenna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-26 20:48:04

Sería útil tener un paquete para instalar estos archivos en una implementación de XCode 4. (o un tarball).

FYI: 3.2.6 de Xcode3 no incluye un as con arquitectura ppc. Pero tenía una copia de seguridad de Leopard en mi computadora. Así que copié esa, parece funcionar. (Use / usr/libexec/gcc/darwin/ppc / as ).

Teniendo en cuenta que tanto gcc como as son de código abierto, lo único que puede no ser redistribuible es el complemento xcode y el SDK 10.4, ¿verdad?

 1
Author: Jason Kenney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-18 05:47:30