Entorno de compilación GP2x/Wiz

Started by DCelso, August 22, 2009, 02:37:34 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

Hay varios entornos para poder hacer compilación cruzada desde un pc a binarios para el linux de las gp32/gp2x/wiz.

El primero es crearte el entorno devkitpro para compilación cruzada ARM.
http://www.devkitpro.org/setup.shtml

El segundo es usar el "toolchain" llamado open2x
http://wiki.open2x.org/open2x/wiki/index.php?title=Toolchain.


Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

#1
A mi punto de vista, por ahora, creo que el mejor es el open2x ya que actualmente sigue teniendo mantenimiento y puedes estar a la última.
En el post anterior vienen los pasos para linux y windows, a continuación resumo los de windows.

Para poder usarlo en windows hay que hacer lo siguiente:
1.- Instalarte cygwin (para simular a linux), como mínimo se necesitan los siguientes componentes instalados.
Archive    ->   tar   1.15.1-2+
 Devel     ->    bison
 Devel    ->   flex   2.5.4a-3+
 Devel   ->   gcc-core   3.4.4-1+
 Devel   ->   binutils   20050610-1+
 Devel   ->   libiconv   1.9.2-1+
 Devel   ->   libncurses   5.4.2+
 Devel   ->   make   3.80-1+
 Devel   ->   patchutils   0.2.30-1+
 Interpret   ->   perl   5.8.7-4+
 Lib   ->   libbz2_1   1.0.3-1+
 Lib   ->   libcharset   1.9.2-1+
 Lib   ->   libiconv   1.9.2-1+
 Lib   ->   libiconv2   1.9.2-1+
 Lib   ->   zlib   1.2.3-1+
 Shell   ->   ash   20040127-3+
 Shell   ->   bash   3.0-11+
 Utils   ->   bzip2   1.0.3-1+
 Utils   ->   cygutils   1.2.9-1+
 Utils   ->   patch   2.5.8-8+
 Web    ->   wget   1.9.1-2+

2.- bajarte y descomprimir
http://www.open2x.org/open2x/toolchains/arm-open2x-linux-kernel-gcc-3.4.4-glibc-2.3.6_i686_cygwin.tar.bz2.zip  (esto es el nucleo)
http://www.open2x.org/open2x/toolchains/arm-open2x-linux-apps-gcc-4.1.1-glibc-2.3.6_i686_cygwin.tar.bz2.zip  (esto son aplicaciones necesarias)
http://www.open2x.org/open2x/toolchains/open2x-libpack-20071903-gcc-4.1.1-glibc-2.3.6.tar.bz2.zip
(esto son librerias necesarias, entre ellas SDL y libz)
La ruta a descomprimir debe ser c:/cygwin/

3.- Editar el archivo c:/cygwin/etc/profile  e insertar al final una línea:
export PATH=/opt/open2x/gcc-4.1.1-glibc-2.3.6/bin:$PATH

4.- Ya debería de estar listo. Para probarlo se puede hacer lo siguiente.
Crear un archivo "main.c" en c:/cygwin/src/prueba
que ponga lo que quieras, por ejemplo

int main(){
printf ("hola mundo");
return 0;
}

Abres la línea de comandos cygwin, se verá una ventana tipo terminal de linux.
Desde ahí escribir

cd /src/prueba
arm-open2x-linux-gcc main.c

Se generará un archivo con el nombre "a.out" que será nuestro ejecutable.
Probar en la consola.

Desde mi punto de vista open2x ofrece la ventaja de estar bajo cygwin pudiendo así usar las autotools que usa bennugd para la compilación.

En devkitpro también se podría hacer pero hay que buscarse por otro lado el programa pkg-config ya que no viene en msys (que es el simulador de linux para esta otra toolchain).
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

para wiz es openwiz, los binarios son arm-openwiz-linux-...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

y ¿que diferencias habrá?
Lo digo porque con saber los parámetros que difieren en la compilación. Se podría obtener un entorno de desarrollo para las dos usando devkitarm.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Juer, muchas gracias, DCelso, me hacía falta un tutorial así como agua de mayo, sobre todo porque prefiero compilar desde windows antes que en Linux, no por nada, sino porque tengo que programar para el OMAP y el entorno es para Linux, y bastante lio tengo ya como para acordarme de cambiar las variables internas de Linux para indicarle al GCC para qué plataforma compilar.

Dos preguntas:
-¿Es obligatorio usar la ruta c:/cygwin? No soy amigo de usar los directorios raiz de las particiones con un SO instalado (pero bueno, esto es como el mal de altura, uno termina acostumbrándose).
-¿cygwin debe instalarse? tampoco soy muy amigo de los instaladores (pero lo mismo de antes)

De todas formas, muchísimas gracias de nuevo, trataré de intentar esto, si no, tambien me han dicho (por fin) cómo instalar el de Linux en el otro foro.

(En ocasiones veo hilos repretiiiiidooooooos... en distintos foros).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

Nada es obligatorio en esta vida :D.
En cuanto a la ruta cygwin, puede ser cualquiera, es acosejable una corta porque luego irá en el path, y es mas cómodo de trabajar con esta. En este caso no repercute mucho porque la ruta de tu cygwin será en la consola de cygwin la ruta root "/".
A ver, Cygwin no se instala, el setup.exe es una aplicacioncilla que sirve para ayudarte a descargar paquetes y a descomprimirlos en una ruta, puedes hacerlo tú mismo a mano, bajarte de la página de sourceforge de cygwin los paquetes y descomprimirlos tu mismo, es más lento pero se puede hacer :D.No se yo soy partidario de usar el setup.exe, si lo han hecho para facilitarme la vida, porqué complicármela ;D.

En cuanto al entorno linux, yo le encuentro ventajas, podrías tener un usuario con las variable spara compilar para gp2x y otro para compilar OMAP. o incluso con el mismo usuario en el script de inicio del "profile" poner un case y preguntar por un 1 o un 2 y dependiendo de éste iniciar unas variables o las otras. asi siempre que te logués en la máquina podrás seleccionar.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Entonces ¿cygwin es como el último SDK oficial que lanzaron? una serie de carpetas con librerías, ejecutables y demás (lo siento, no encuentro el enlace). Tengo el viejo con carpetas como ARM-linux, bin, demo, etc, include, info... pero viene con algo llamado msys o minsys... Vamos, que ninguna ayuda para novatos.
De todas formas, prefiero el open2x, es más compatible y, segun me comentó animanegra, más efectivo y sencillo de usar.

Y respecto a Linux, si, claro, todo eso es muy bonito, pero para el que sabe :D Yo llevo con Linux un año, de forma esporádica, y sólo he salido del modo gráfico para manejar la configuración de la red WIFI y usar el SAMBA para la negrita :D
Ya fue en la facultad y lo único que hacíamos era compilar con gcc para la placa "colibrí" (si, creo que era el colibrí) y siempre se nos olvidaba indicar para qué compilabamos (menos mal que uno lo apunta todo, y lo sigue paso a paso, porque de explicarnos qué hace cada cosa...).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

#7
Pos nada, instalado cygwin (he tardado pero está hecho), pero no he encontrado esto:
Archive    ->   tar   1.15.1-2+
Lo he buscado pero nada. Y del resto, la cosa ha evolucionado, hay versiones nuevas. Pero bueno, mañana le meto las librerías de open2x y probamos a compilar.
Y si la cosa va bien, intentaré recompilar la DLL base que hice hace tiempo, que funciona en PC pero no en GP2X. Supongo que, dada la naturaleza de Bennu, este problema no existe ¿cierto?

PD: DCelso, cuando dices "Se generará un archivo con el nombre "a.out" que será nuestro ejecutable." te refieres que hay que renombrar ese archivo a GPU (ejecutables de GP2X/WIZ) o que hay que hacer el GPE correspondiente (script para llamar al bash)?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Nuevo problema: a lo del cygwin le añado esto. He descomprimido nucleo, aplicaciones y librerías de los zip con el winrar, y como el bz2 no lo reconocía lo he intentado con el gestor de archivadores y me dice esto
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/g++.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/c++.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/ld-linux.so.2: No se puede crear el enlace simbólico a `ld-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libanl.so.1: No se puede crear el enlace simbólico a `libanl-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libanl.so: No se puede crear el enlace simbólico a `libanl.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libBrokenLocale.so.1: No se puede crear el enlace simbólico a `libBrokenLocale-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libBrokenLocale.so: No se puede crear el enlace simbólico a `libBrokenLocale.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libc.so.6: No se puede crear el enlace simbólico a `libc-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libcrypt.so.1: No se puede crear el enlace simbólico a `libcrypt-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libcrypt.so: No se puede crear el enlace simbólico a `libcrypt.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libdl.so.2: No se puede crear el enlace simbólico a `libdl-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libdl.so: No se puede crear el enlace simbólico a `libdl.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libgcc_s.so: No se puede crear el enlace simbólico a `libgcc_s.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libm.so.6: No se puede crear el enlace simbólico a `libm-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libm.so: No se puede crear el enlace simbólico a `libm.so.6': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libmudflap.so.0: No se puede crear el enlace simbólico a `libmudflap.so.0.0.0': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libmudflap.so: No se puede crear el enlace simbólico a `libmudflap.so.0.0.0': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libmudflapth.so.0: No se puede crear el enlace simbólico a `libmudflapth.so.0.0.0': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libmudflapth.so: No se puede crear el enlace simbólico a `libmudflapth.so.0.0.0': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnsl.so.1: No se puede crear el enlace simbólico a `libnsl-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnsl.so: No se puede crear el enlace simbólico a `libnsl.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_compat.so.2: No se puede crear el enlace simbólico a `libnss_compat-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_compat.so: No se puede crear el enlace simbólico a `libnss_compat.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_dns.so.2: No se puede crear el enlace simbólico a `libnss_dns-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_dns.so: No se puede crear el enlace simbólico a `libnss_dns.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_files.so.2: No se puede crear el enlace simbólico a `libnss_files-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_files.so: No se puede crear el enlace simbólico a `libnss_files.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_hesiod.so.2: No se puede crear el enlace simbólico a `libnss_hesiod-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_hesiod.so: No se puede crear el enlace simbólico a `libnss_hesiod.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_nis.so.2: No se puede crear el enlace simbólico a `libnss_nis-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_nis.so: No se puede crear el enlace simbólico a `libnss_nis.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_nisplus.so.2: No se puede crear el enlace simbólico a `libnss_nisplus-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libnss_nisplus.so: No se puede crear el enlace simbólico a `libnss_nisplus.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libpthread.so.0: No se puede crear el enlace simbólico a `libpthread-0.10.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libresolv.so.2: No se puede crear el enlace simbólico a `libresolv-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libresolv.so: No se puede crear el enlace simbólico a `libresolv.so.2': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/librt.so.1: No se puede crear el enlace simbólico a `librt-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/librt.so: No se puede crear el enlace simbólico a `librt.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libssp.so.0: No se puede crear el enlace simbólico a `libssp.so.0.0.0': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libssp.so: No se puede crear el enlace simbólico a `libssp.so.0.0.0': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libstdc++.so.6: No se puede crear el enlace simbólico a `libstdc++.so.6.0.8': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libstdc++.so: No se puede crear el enlace simbólico a `libstdc++.so.6.0.8': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libthread_db.so.1: No se puede crear el enlace simbólico a `libthread_db-1.0.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libthread_db.so: No se puede crear el enlace simbólico a `libthread_db.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libutil.so.1: No se puede crear el enlace simbólico a `libutil-2.3.6.so': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/lib/libutil.so: No se puede crear el enlace simbólico a `libutil.so.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-ar.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/ar.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-as.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/as.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-g++.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-c++.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-gcc.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-gcc-4.1.1': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-ld.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/ld.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-nm.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/nm.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-objdump.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/objdump.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-ranlib.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/ranlib.exe': Operación no permitida
tar: opt/open2x/gcc-4.1.1-glibc-2.3.6/./bin/arm-open2x-linux-strip.exe: No se puede crear un enlace duro a `opt/open2x/gcc-4.1.1-glibc-2.3.6/./arm-open2x-linux/bin/strip.exe': Operación no permitida
tar: Salida con error demorada desde errores anteriores


Y no se descomprimen. ¿Alguna sugerencia? ¿algun comando que deba aplicar en lugar de modo gráfico? :(
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

probaste la distro wiz tal cual viene? sin tocar nada?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

#10
Si, ya lo comenté en el otro hilo:
http://forum.bennugd.org/index.php?topic=736.0
Respuesta 2.

Por eso quiero recompilar para GP2X, pero si no puedo descomprimir las librerías que necesito, no podré hacer nada.
Mientras iré buscando alternativas.

EDIT: ¿puede ser que deba descomprimirlo desde el propio cygwin?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

lamentablemente, eso que has probado no es lo que viene por defecto en el paquete, has tocado los mismos... debes probar tal cual vienen...

ya que los ejecutables funcionaron... pero algo estas haciendo mal...

ves por que se necesita tener una consola? :D
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Lo volveré a probar, aunque ya lo hice usando tu script, pero modificando la dirección del runtime pues lo había copiado a la misma carpeta.
Ya, ya, lo pruebo sin más y te cuento.

Yo ya se para qué se necesita la consola, ya lo dije en su momento: porté un juego sin la consola y fue imposible.

PD: he hecho un edit al último mensaje a la vez que escribías, por si sabes algo. (Si andas por el MSN...)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Nada, solucionado:

El Tar parece que ya viene instalado por defecto, y a continuación vereis por qué.
Efectivamente, los tres paquetes tar.bz2 hay que "instalarlos" desde cygwin: ejecutando el .bat de donde se instala, se abre una ventana de MS-DOS, salvo que en realidad es de un Linux virtual.
Colocamos el tar.bz2 del kernel y de la aplicaciones en la raiz de nuestro Linux (la carpeta donde instaleis Cygwin), y a continuación hacemos:

tar xvjf arm-gp2x-linux...(resto del nombre)

Primero con el kernel, luego con las aplicaciones. Tras unos segundos, se habrán descomprimido los archivos. Tendremos una nueva carpeta, opt, con el contenido de ambos ficheros.
Ahora cojemos el de las librerías, y lo metemos en opt/open2x, ejecutamos de nuevo el tar con este fichero (no olvidar las opciones) y se sobreescribirán las librerías viejas por las nuevas.
Si los demás me confirmas que esto es así, estoy listo para hacer una prueba ¿Hay algun ejemplo por ahi para testear? (y cómo se hace, claro ^^U).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

no tengo windows... no puedo confirmar que sea asi...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2