Hola.
1 - Antes de todo pedia una sección GCW Zero para Bennu, para runtime y juegos.
2 - El runtime bennuGD en esta consola viene incluido en el firmware, y es la ultima version. Aparte de esto estoy casi seguro que es una compilación Monolitica, la cual viene sin compilador y no admite modulos creados por nosotros (he hecho la prueba con un modulo compilado por mi, incluido a nivel del .dcb).
3 - Estoy compilando una versión para la consola, normal con modulos, incluido el compilador, ya que algunos compilados pueden tener problemas, y necesitamos compilar en la consola.
4 - El nuevo OS_ID que identifica la consola es el siguiente OS_ID = OS_GCWZERO o OS_ID = 1020.
5 - Ya casi lo tengo compilado, tengo el siguiente error, Splinter a ver si me puedes hechar un cable, parece ser problemas con la version de ZLIB:
-L/home/geca/Geca/MyProject/gcw0-toolchain/usr/lib -lz
/home/geca/Geca/MyProject/gcw0-toolchain/usr/bin/../lib/gcc/mipsel-gcw0-linux-uclibc/4.8.2/../../../../mipsel-gcw0-linux-uclibc/bin/ld: skipping incompatible /home/geca/Geca/MyProject/gcw0-toolchain/usr/lib/libz.so when searching for -lz
/home/geca/Geca/MyProject/gcw0-toolchain/usr/bin/../lib/gcc/mipsel-gcw0-linux-uclibc/4.8.2/../../../../mipsel-gcw0-linux-uclibc/bin/ld: skipping incompatible /home/geca/Geca/MyProject/gcw0-toolchain/usr/lib/libz.a when searching for -lz
c_main.o: In function `_dlibaddr':
c_main.c:(.text+0xf8): undefined reference to `dlsym'
c_main.c:(.text+0xfc): undefined reference to `dlsym'
c_main.c:(.text+0x110): undefined reference to `dladdr'
c_main.c:(.text+0x118): undefined reference to `dladdr'
c_main.c:(.text+0x1e4): undefined reference to `dlerror'
c_main.c:(.text+0x1e8): undefined reference to `dlerror'
c_main.o: In function `import_module':
c_main.c:(.text+0x1650): undefined reference to `dlopen'
c_main.c:(.text+0x1ad8): undefined reference to `dlclose'
c_main.c:(.text+0x1b34): undefined reference to `dlopen'
c_main.c:(.text+0x1bdc): undefined reference to `dlclose'
c_main.c:(.text+0x1c14): undefined reference to `dlerror'
c_main.c:(.text+0x1c40): undefined reference to `dlclose'
c_main.c:(.text+0x1c54): undefined reference to `dlerror'
c_main.c:(.text+0x1c98): undefined reference to `dlclose'
c_main.c:(.text+0x163c): undefined reference to `dlopen'
c_main.c:(.text+0x1ac0): undefined reference to `dlclose'
c_main.c:(.text+0x1b30): undefined reference to `dlopen'
c_main.c:(.text+0x1bd8): undefined reference to `dlclose'
c_main.c:(.text+0x1c10): undefined reference to `dlerror'
c_main.c:(.text+0x1c30): undefined reference to `dlclose'
c_main.c:(.text+0x1c50): undefined reference to `dlerror'
c_main.c:(.text+0x1c94): undefined reference to `dlclose'
b_crypt.o: In function `crypt_create':
b_crypt.c:(.text+0x5c): undefined reference to `DES_key_sched'
b_crypt.c:(.text+0x64): undefined reference to `DES_key_sched'
b_crypt.c:(.text+0x74): undefined reference to `DES_key_sched'
b_crypt.c:(.text+0x7c): undefined reference to `DES_key_sched'
b_crypt.c:(.text+0x8c): undefined reference to `DES_key_sched'
b_crypt.o:b_crypt.c:(.text+0x94): more undefined references to `DES_key_sched' follow
b_crypt.o: In function `crypt_data':
b_crypt.c:(.text+0x190): undefined reference to `DES_ecb_encrypt'
b_crypt.c:(.text+0x19c): undefined reference to `DES_ecb_encrypt'
b_crypt.c:(.text+0x1b0): undefined reference to `DES_ecb_encrypt'
b_crypt.c:(.text+0x1c4): undefined reference to `DES_ecb_encrypt'
b_crypt.c:(.text+0x1d0): undefined reference to `DES_ecb_encrypt'
b_crypt.o:b_crypt.c:(.text+0x1e4): more undefined references to `DES_ecb_encrypt' follow
collect2: error: ld returned 1 exit status
las libs ya estan localizadas, estaba mal la ruta de las libs, ahora tengo sólo los errores del main (undefined reference)
te faltan la libcrypto y la libdl...
agrega detras de -lz esto
-lcrypto -ldl
si no tenes la crypto proba con
-ldes -ldl
la verdad que no me acuerdo si es des o crypto
por otro lado, que buena noticia que venga bennugd en el firmware...
como sabes que es la monolitica, no tiene por ejemplo libmod_video.so ?
has un
find / -name 'libmod_video.so'
a ver que sale... si es un busybox, agrega delante del find la palabra busybox
asi
busybox find / -name 'libmod_video.so'
un modulo incluido a nivel dcb? no entiendo eso.
le pase la lista de modulos a un responsable del firmware y me dijo que sólo llebaba el bgdi, estoy pendiente de sacarlo usando telnet y comprobar su tamaño para salir de dudas.
me refiero a poner el modulo compilado junto al dcb, porque por defecto bennu busca los modulos tambien en la raiz cierto ? la version monolitica no busca modulos externos cierto ?
creo que si, creo que inclui esa feature...
en que makefile o fichero de config (carpeta) tengo que poner la llamada a las nuevas libs ?
donde dice -lz
Quote from: FreeYourMind on July 14, 2014, 06:57:23 PM
1 - Antes de todo pedia una sección GCW Zero para Bennu, para runtime y juegos.
+1
Muchisimas gracias por portar el compilador, Free. :)
Quote from: SplinterGU on July 14, 2014, 09:18:11 PM
donde dice -lz
jajajajaj, hasta ahi habia llegado pero era para no buscar entre carpetas, imagina que tengo que ponerlo, eso va afectar las demas compilaciones, deberia poder ponerse en el .sh principal de esta plataforma y asi no afectar a los demás
el -lz sale en los makefiles generados, necesito saber que fichero debo modificar de todos los ficheros de configuracion que hay
no se que fichero tenes que modificar, no se que version/trunk/rama tenes... tampoco importa mucho... solo lo tenes que meter en los lugares donde tiene -lz en los fuentes de bennugd...
que importa si afecta a otras plataformas, copia la rama entera a otro directorio, modifica ahi y listo.
El que falla es el compilador, c_main.o requiere las libs esas.
Cual la forma mas facil de quitar el bgdc del makefile, para que no lo llame ?
Podias ayudarme un poco a entender los ficheros de configuracion, los makefiles y config.status son modificados en tiempo de compilacion y es donde encuentro las llamadas a la libs y tambien a la carpeta del bgdc.
Podias ayudarme y decirme que ficheros debo modificar y donde buscar el bgdc y las libs y que esas modificaciones son las que en tiempo real van a generar los makefiles y config.status, estoy perdiendo el tiempo, y no te estoy pidiendo la luna, me dices para buscar todos los -lz y sabes perfectamente que muchos ficheros se modifican en tiempo de compilacion y son ficheros en los que no debo perder el tiempo...
ya lo he descubierto... son los ficheros configure.
El bgdrtm.so tambien necesita las libs estas, tendre que seguir mirando el tema de las libs...
Resuelto:
Modificar archivo bennugd/core/configure:
substituir linea
ZLIBS="-lz"
por
ZLIBS="-lz -lcrypto -ldl"
Ahora tengo lo siguiente:
checking for SDL - version >= 1.2.0... no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
configure: error: *** SDL version 1.2.0 not found!
*** ABORT ***
Arreglado path al sdl-config....
Ahora el siguiente error, es un no acabar ;D
file_png.c:287:37: error: 'png_info' no tiene un miembro llamado 'trans_values'
( ptr8[0] == info_ptr->trans_values.red ) &&
^
file_png.c:288:34: error: 'png_info' no tiene un miembro llamado 'trans_values'
( ptr8[1] == info_ptr->trans_values.green ) &&
^
file_png.c:289:34: error: 'png_info' no tiene un miembro llamado 'trans_values'
( ptr8[2] == info_ptr->trans_values.blue )
esos fuentes no son los ultimos... eso ya esta fixeado...
No lo son pero es una version estable y que compila, ya que fué la primera que porte a Pandora...
nop, no compila... no es compatible con la nueva libpng... por eso no compila.
toma el file_png del oficial o modificalo en base al oficial.
gracias, eso haré
de nada... avisa cualquier cosa
currando a las 5 de la mañana antes de salir al curro xDDD
He cambiado la mod_map por la ultima, tengo el mismo error, creo que el error esta en la version de la pnglib del toolchain, en este codigo de DC Elso:
/* DCelso */
#if (PNG_LIBPNG_VER>=10500)
if (( color == PNG_COLOR_TYPE_RGB ) && ( png_get_bit_depth(png_ptr, info_ptr) == 24 ) && ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ))
#else
if (( color == PNG_COLOR_TYPE_RGB ) && ( info_ptr->pixel_depth == 24 ) && ( info_ptr->valid & PNG_INFO_tRNS ))
#endif
{
uint8_t * ptr8 = (uint8_t *)orig;
if (
#if (PNG_LIBPNG_VER>=10500)
( ptr8[0] == trans_color->red ) &&
( ptr8[1] == trans_color->green ) &&
( ptr8[2] == trans_color->blue )
#else
( ptr8[0] == info_ptr->trans_values.red ) &&
( ptr8[1] == info_ptr->trans_values.green ) &&
( ptr8[2] == info_ptr->trans_values.blue )
#endif
)
*ptr32 = 0;
}
ptr32++, orig++ ;
}
}
}
else
{
#if (PNG_LIBPNG_VER>=10500)
png_color_16p trans_color = 0;
png_get_tRNS( png_ptr, info_ptr, 0, 0, &trans_color);
#endif
desconozco la version de png que tenes, posiblemente haya que corregir el #if...
Luego lo miro, pero ya he preguntado a los responsables por la version del toolchain
me han respondido 2:
a) Version 16, IIRC.
b) /usr/lib/libpng14.so.14
entonces a modo lamer, que modificaciones hay que hacer sabiendo ya la version ?
a) no entiendo a que te referis.
b) es version 1.4
fijate si en el png.h esta definida la funcion png_get_bit_depth
si esta, entonces cambia los
#if (PNG_LIBPNG_VER>=10500)
por
#if (PNG_LIBPNG_VER>=10400)
y decime a ver que onda
funciona gracias! ya queda poco, ya ha compilado mas modulos, ahora se detiene aqui:
mod_mem.c: En la función 'modmem_memory_free':
mod_mem.c:138:20: error: no se conoce el tamaño de almacenamiento de 'meminf'
struct sysinfo meminf;
^
mod_mem.c: En la función 'modmem_memory_total':
mod_mem.c:176:20: error: no se conoce el tamaño de almacenamiento de 'meminf'
struct sysinfo meminf;
^
make[1]: *** [mod_mem_la-mod_mem.lo] Error 1
Bueno he comentado estas dos secciones del codigo y he finalizado la compilación ;D ;D ;D
A ver si me puedes ayudar a tratar este codigo, y ver que funciones se pierden al estar comentadas devolviendo ambas -1
Pruebas:
1 - TODO OK! Ya se puede usar este runtime en lugar del instalado en la consola, que es monolitico y este es modular igual a las versiones
de Pandora, Wiz y Caanoo.
2 - Permite usar tus modulos para bennugd, he probado la yeti que he compilado para mi juego Hamster's Escape 3D y todo va perfecto.
3 - Incluye el compilador, si teneis problemas con vuestro DCB ahora lo podeis compilar en la consola, compila y ejecuta perfecto.
Os dejo una fotaca del Hamster's Escape 3D, va super fluido mucho mejor que en las demás consolas.
(http://oi61.tinypic.com/2m6piit.jpg)
Enlace de descarga de BennuGS r270 para GCW Zero:
https://dl.dropboxusercontent.com/u/33372657/bgd-runtime%20%28r270%29%20%28GCWZero%29.rar (https://dl.dropboxusercontent.com/u/33372657/bgd-runtime%20%28r270%29%20%28GCWZero%29.rar)
Que emoción, que emoción! Sabía que ibas a hacer el port, pero no me lo esperaba tan rápido. Toma karmazo!
Lamentablemente no lo podré probar hasta el viernes a mediodía.
Quote from: FreeYourMind on July 16, 2014, 06:12:50 PM
Os dejo una fotaca del Hamster's Escape 3D, va super fluido mucho mejor que en las demás consolas.
Es que la Zero es potencia bruta! No entiendo como la batería puede durar tanto.