Cómo compilar programas desde iOS

Estándar

20120227-175254.jpg

Todos sabemos que los iPhones, iPods touch y iPads sirven para navegar por Internet, leer el correo y entretenerse. Muchos sabemos que no se limitan a eso, sino que además podemos usarlo como estudio de dibujo, cajero automático, renderizador 3D… pero lo que pocos saben, es que es capaz de compilar sus propios programas en C. Te preguntarás, ¿cómo? Pues bien, en este post os enseño la forma de crear vuestros propios programas directamente desde el propio iAparato.

Antes de todo, necesitarás las siguientes cosas:

  • Un iAparato con jailbreak, con al menos iOS 2 (recomiendo un iPad 2)
  • Una app para acceder al terminal (en este caso Prompt, pero casi siempre es mejor usar Mobile Terminal)
  • Un poco de experiencia con UNIX
  • Una IDE compatible con C, como Koder
  • El explorador de archivos iFile
  • Una conexión a Internet para instalarlo todo (no necesariamente rápida)
  • (Recomendado) Teclado Bluetooth, para escribir mejor

¡OJO! Si estás usando un dispositivo iOS de 64 bits, como el iPhone 5s, este tutorial no funcionará.

Una vez tengamos todo preparado, abre el terminal del iGadget y ve copiando uno a uno los siguientes pasos:

apt-get install wget
wget http://www.syshalt.net/pub/iphone/gcc-iphone/fake-libgcc_1.0_iphoneos-arm.deb
dpkg –i fake-libgcc_1.0_iphoneos-arm.deb
apt-get install iphone-gcc
wget http://www.syshalt.net/iphone/gcc-iphone/sdk-2.0-headers.tar.gz
tar -xvzf sdk-2.0-headers.tar.gz
cd include-2.0-sdk-ready-for-iphone
cp –r * /usr/include
cd ..
wget http://www.syshalt.net/iphone/gcc-iphone/gcc_files.tar.gz
tar -xvzf gcc_files.tar.gz
cd gcc_files
cp –r * /usr/lib
cd ..

(Gracias a syshalt por dar casi todos los comandos de arriba y almacenar ciertos archivos esenciales🙂 )

Con eso ya tenemos listo el compilador de C, que, como ya te habrás dado cuenta, es una versión de GCC adaptada para iOS, y en concreto, para Darwin ARM. Funciona exactamente igual a la de ordenador, así que no te preocupes por si no sabrás manejarlo.

Pasemos a “integrar” nuestra IDE con GCC. Para ello, obtén la carpeta del sistema en la que están guardados tus proyectos (en mi caso, /var/mobile/Applications/0CF0D906-2824-4300-82E9-95F8FD71A223/Documents/Project/c/). Luego, en la carpeta principal (la que se abre cada vez que inicias el terminal), ejecuta un comando parecido a éste, pero alterándolo dependiendo de dónde esté el código fuente:

ln -s /var/mobile/Applications/0CF0D906-2824-4300-82E9-95F8FD71A223/Documents/Project/c/ ./c

Ya hemos terminado de instalar y configurar nuestro estudio de programación. Ahora, cada vez que vayas a programar en C, sigue los siguientes pasos:

  • Abre tu IDE favorita
  • Escribe el código fuente de tu programa
  • Dirígete ahora al terminal
  • Teclea cd c
  • Compila y, si no ha dado errores, ejecuta tu programa

¡Felices compilaciones!😉

P.D.: Os dejo adjuntos mis programas AddOne y Demo, ambos se compilan y ejecutan con ./compile.sh, y para ejecutar sin compilar, usa ./addone para AddOne y ./run.sh para Demo: http://espectalll123server.net63.net/c-sources-ios.zip

Ahora podéis entrar en espectalll123’s C Sources para descargar códigos fuentes en C. A 4 de marzo del 2012, todos los programas existentes fueron hechos en mi iPad, por lo que podéis compilarlos sin problemas. ¡Probadlos en Mac o Linux!😉

IMPORTANTE: en ciertos jailbreaks (como el de iOS 5.1.1) parece ser que los programas crashean aún estando bien compilados. Esto se debe a que es necesario firmarlos para que iOS los detecte como válidos. Para ello podemos ejecutar ldid -S seguido de nuestro ejecutable. De esta manera, podremos ejecutarlos sin problema.

13 comentarios en “Cómo compilar programas desde iOS

  1. Carlos Cortes

    Oye, yo tengo un ipad de 1ra generacion 16 GB, y ya hice todo lo requerido para tener el gcc, pero al momento de compilar me sale esto “id: unknow/unsupported architecture name for -arch amr
    collect2: id returned 1 exit status”
    y no me genera ningun ejecutable, ¿por que, si ya hice todo al pie de la letran incluso, lo hice de 3 formas distintas y nada?

    • Hola, Carlos. En un principio, en un iPad original no debería dar error alguno de arquitectura, así que solamente se me ocurren dos preguntas que hacerte:

      ¿Dice “arm” o “amr”?

      ¿Estás compilando código fuente importado, o estás haciendo el tuyo? Compártelo si puedes.

      • Carlos Cortes

        creo que arm, pero pues me di por vencido y reestableci mi ipad, le volvi a hacer el jailbreak, y sin restaurar archivos desde iTunes, instalé el gcc, pero ahora el problema es que me tira muchisimos errores el la libreria stdio.h:/

      • Si has seguido correctamente el tutorial y todos los pasos han salido como debiesen, entonces no entiendo cómo una librería tan básica como stdio.h puede no funcionar. Por mala suerte ya no tengo un dispositivo iOS donde probarlo😦

  2. Marcos

    Hola me falta configurar esta parte:

    ln -s /var/mobile/Applications/0CF0D906-2824-4300-82E9-95F8FD71A223/Documents/Project/c/ ./c

    Después de Project va el nombre de mi carpeta donde tendré los archivos, pero el ./c al final esta bien o la c la tengo que cambiar por el nombre de mi carpeta¿

    Gracias por la ayuda.

    Saludos.

    • Por algo puse que era necesaria experiencia básica en UNIX😛

      Ese comando crea un enlace (acceso directo) a la carpeta donde está el código fuente. Efectivamente, la primera c tiene que ser reemplazada por la carpeta de tu proyecto. La segunda c representa el nombre del enlace.

      Y por cierto, recuerda reemplazar 0CF0D906-2824-4300-82E9-95F8FD71A223 por la carpeta correspondiente en tu iAparato. Puedes encontrarla en /var/mobile/Applications usando iFile.

    • ¿No es demasiado raro que seas root y no te haya funcionado?

      He usado estos pasos en mi iPad 2 dos veces, una en iOS 5.0.1 y la otra en 5.1.1, así que si eres root te debería funcionar. Si estuvieras sin saberlo en mobile, teclea su y la contraseña de root (normalmente alpine ), esto te daría los permisos necesarios para ejecutar dpkg y mv sin errores de permisos.

      Si te sigue ocurriendo, agradecería que me enviaras un log paso a paso mostrando lo que ocurre.

      • marcos

        Hola ya pude realizar todo, solo me falta poder compilar, creo que soy bastante novato en esto de la programacion pero si me pudieras indicar ya el proceso para poder compilar un codigo que ya tengo en el koder, gracias!!!

      • Es sencillo: una vez estés en la carpeta con el código fuente de tu programa, ejecuta esto:

        gcc [archivo].c -o [archivo]

        Por supuesto, reemplaza [archivo] con el nombre del programa. Con eso tendrás un programa de iOS 100% auténtico😉

        Para ejecutarlo, basta con ir a la carpeta donde compilaste (si no estabas ya) y ejecutar ./[archivo]

        P. D.: Si tu programa es en C++, recuerda reemplazar gcc por g++

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s