Desarrollo para la XBox con Mac
En proceso de traduccion. Un poquito de paciencia... ;-)
Este articulo describe el proceso por el que yo (el autor original) he seguido para configurar mi iBook para compilar codigo C escrito con OpenXDK, y hacer ejecutables nativos de XBox. En el momento de escribir esto, he compilado satisfactoriamente un ejecutable de Windows en mi sistema, a pesar de que no he sido capaz de convertirlo en ejecutable de XBox.
Supervision
editarTodos estos pasos son faciles de seguir, a pesar de que hay algunos trucos que el recien iniciado necesita saber pasando horas de googleo. El proceso seguido es similar a la instalacion de OpenXDK en Linux, pero difiere de el porque estoy usando un microprocesador PowerPC. Esto significa que primero debemos construir un compilador cruzado. Se supone que conoces como acceder a la consola.
DarwinPorts
editarDarwinPorts es una manera de marcar e instalar programas de codigo abierto en tu sistema facilmente, Esta diseñado especificacmente para Darwin (como el nombre sugiere), y usando esto puedes descargar MingGW. La version actual de DarwinPorts es la 1.2, y viene en un comodo paquete instalable. Una vez instalado, ejecuta el siguiente comando para actualizar la lista interna de ports disponibles:
$ sudo port -d selfupdate
MinGW
editarLos es de MingGW y las librerias de la API de Windows te permiten escribir y compilar programas para ejecutarlos en un sistema i386. A pesar de que puedes descargar una copia de todo lo necesario de la web, usando DarwinPorts para bajar los archivos necesarios para ti es la mejor opcion. Para bajar las herramientas necesarias, ejecuta el comando:
$ sudo port install i386-mingw32-gcc
Esto instalara, configurara e instalara los compiladores cruzados gcc y las herramientas en tu sistema. Nota: este paso tomara un tiempo.
Errores de compilacion
editarA la hora de escribir este texto, hay un errore de compilacion cuando el instalador ejecuta 'make' para el paquete 'binutils'. El error exacto es mostrado debajo:
$.../work/binutils-2.15.91-20040904-1/gas/config/tc-i386.h:457: error: array type has incomplete element type
Para evitar este problema, cambia el compilador a gcc-3.3 cuando se prepare a contruir.
$ sudo gcc_select 3.3
Entonces, una vez que el paquete 'binutils' ha compilado satisfactoriamente, para la instalacion (Ctrl + C) (el instalador fallaria en cualquier caso) y cambia el compilador otra vez a gcc-4.0. Entonces la instalacion deberia completarse satisfactoriamente.
Probando
editarEste es un paso opcional. Yo he probado que la configuracion funcionaba escribiendo un programa Hola Mundo y ejecutandolo en mi maquina Windows. El contenido de 'hola.c' es mostrado debajo:
#include <stdio.h> int main(int argc, char **argv) { printf ("Hola\n"); return 0; }
Para compilar, es como el normal gcc/++:
$ i386-mingw32-gcc -o hola.exe hola.c
Esto produce un archivo hola.exe ejecuble para Windows que puede correr nativamente en Windows. Nota que esto solo prueba la configuracion del compilador cruzado, y no OpenXDK.
OpenXDK
editaropenXDK es un kit libre para desarrollar aplicacion que correran en la Xbox. Contiene un reemplazo completo de libc, usa SDL para multimedia (sonido y red no estan actualmente soportados) y compila con gcc.
Puedes descargar la ultima version desde SourceForge. Estate seguro de descargar el archivo binario OpenXDK_#_bin.zip (donde # es la version). Nota: a pesar de que dice que es para la plataforma i386, este es nuestro sistema objetivo, y OpenXDK NO compilara (incluso con i386-mingw32-gcc) en el Mac.
Cxbe
editarCxbe comes with OpenXDK, and is located int the bin directory. It is responsible for converting the Windows executable into an Xbox executable. You won't be able to use the one provided, as it is for Windows.
Unfortunately, at the time of writing the Cxbe source in the OpenXDK_src package is from an older version than the compiled version in the OpenXDK_bin package. Until a workaround surfaces, we will have to send the half completed executable to a Windows box and run Cxbe there.
Compiling
editarTo compile C code written for the xbox, you need a lengthy flag list for the compiler. The following was adapted from the OpenXDK Website. This assumes that you have a working version of cxbe on your system.
# installed OpenXDK path XDK = /usr/local/openXDK # cross-compiler CC = i386-mingw32-gcc # cxbe path (for post-processing) CXBE = $(XDK)/bin/cxbe SDLFLAGS = -DENABLE_XBOX -DDISABLE_CDROM CC_FLAGSA = -g -std=gnu99 -ffreestanding -nostdlib -fno-builtin CC_FLAGSB = -fno-exceptions -mno-cygwin -march=i386 $(SDLFLAGS) INCLUDE = -I$(XDK)/i386-pc-xbox/include -I$(XDK)/include -I$(XDK)/include/SDL CLINK = -nostdlib ALIGN = -Wl,--file-alignment,0x20 -Wl,--section-alignment,0x20 SHARED = -shared ENTRYPOINT = -Wl,--entry,_WinMainCRTStartup STRIP = -Wl,--strip-all LD_FLAGS = $(CLINK) $(ALIGN) $(SHARED) $(ENTRYPOINT) $(STRIP) LD_DIRS = -L$(XDK)/i386-pc-xbox/lib -L$(XDK)/lib LD_LIBS = $(LD_DIRS) -lSDL -lopenXDK -lhal -lc -lhal -lc -lusb -lxboxkrnl all: default.exe *.o: *.c $(CC) $(CC_FLAGSA) $(CC_FLAGSB) $(INCLUDE) $< default.exe: *.o $(CC) -c $< -o $@ $(LD_LIBS) $(LD_FLAGS) $(CXBE) -TITLE:"$@" -DUMPINFO:"default.cxbe" -OUT:"default.xbe" $@ >/dev/null clean: rm -f *.o *.xbe *.cxbe *.exe
Conclusion
editarWhile there is limited support for Xbox development on the Mac, because of the use of Linux to develop legal xbox executables and the fact that Mac OS X is built on a flavor of Unix, it is possible to piggy-back Linux's support sources and (with slight manipulation) produce a viable solution to Mac Xbox Development.