Hola a todos:
Pues nada, que hoy, leyendo acerca de compilar paquetes de codecs para un OMAP y patatín y patatán, me dio por arrancar en modo administrador e intentar de nuevo compilar Bennu para la negrita, pero esta vez con el SDK oficial.
Y lo he intentado todo, pero el minsys no arranca ni a la de tres: incluso he modificado el PATH y las variabñes que me pedían (y ya sabeis lo miedoso que soy tocando ahí) y ni aun así. Tambien he intentado meter la carpeta bin, la lib y demás al path e intentar ejecutarlo "a pelo", modificando los makefiles... y peor, una pérdida absoluta de tiempo.
Por lo que volví al cygwin. Seguí el proceso de compilación de la última vez, usando una copia de los fuentes (y makefiles) que utilicé la última vez, y cambiando la carpeta del runtime a otra con una copia de los binarios, librerías y demás del SDK que contiene el minsys.
Y nada.
Bueno, os subo el .sh para establecer rutas y variables, y el log del configure, porque dice que no encuentra un fichero (crt1.o) que sólo se encuentra en las toolchains del open2x... y en la carpeta /lib/mingw
pero entonces para jugar en la f100 con un juego echo en bennu solo hay que hacer un ejecutable ¿no? o no va asi??
umn, no.
Bueno sí, el ejecutable del intérprete de bennugd, pero también necesitas el .dcb de tu juego.
Futublog, no te confundas: una cosa es compilar Bennu y otr muy distinta es compilar en/para Bennu. Yo estoy intentando compilar el intérprete Bennu para la consola GP2X, que como está medio abandonada tengo que hacer como Juan Palomo (yo me lo guiso, yo me lo como).
Actualmente, para jugar en la F100 tienes que hacer tu DCB (o no, porque el BGDC también está portado), tener el runtime de Bennu para GP2X (está en las descargas del concurso) y el firm Open2X (que es lo que estoy intentando evitar, a ver si puede funcionar en cualquier firm).
En fin, parece ser que tengo la cosa complicada si no he obtenido respuesta :S
No quiero instalar el SDK para Linux (lo que simplificaría mucho las cosas) porque tengo que hacer el proyecto y no quiero tener conflictos entre las toolchains de GP2X, las del OMAP y las de la madre que...
A ver, ¿puedes poner los datos de tu entorno actual de compilación (con el que compilaste la version de gp2x que va) y como lo instalastes?
Pues uso el Cygwin del entorno de compilación Open2X que instalé siguiendo las intrucciones, si mal no recuerdo, del tutorial que pusiste tú en este mismo foro. A eso, le añadí en la carpeta c:/cygwin/opt/ otra subcarpeta llamada "sdkoficial" (al mismo nivel que la carpeta open2x) en la que copié varias carpetas del entorno oficial que instalé en su día y que ahora no funciona. Dichas carpetas son:
-arm-linux
-bin
-include
-lib
-libexec
-man
-share
Y cuyo contenido, sin comparar 1:1, es prácticamente idéntico en nombres y extensiones que los de la carpeta open2x.
Respecto a la definición de variables que uso, es la que está arriba, uso una copia de los fuentes que conseguí compilar en su día, y el resultado del configure lo he subido tambien.
y cual era el problema que te daba el binario con el firmware original?
el problema es que esta las libs linkean contra otra libc
¿Eso tiene algo que ver con la libiconv? porque creo que me salté ese paso, el compilarlo con las librerías oficiales... y que no me acuerdo qué había que hacer una vez compilado.
Por que si no, me pierdo: hay libc.a en la carpeta /lib de la /cygwin, y aunque haya otra en la /lib de las toolchains Open2X, no se hace referencia alguna a ellas en el .sh.
puedes probar una cosas un poco rabúa, como tienes ya un entorno que compila el código fuente, pues haz una copia de seguridad de este y sobreescribe todas las dlls, binarios y demás cosas con los del pack oficial de sdk e intenta compilar. A ver si cuela.
con sobreescribir me refiero a descomprimir lo que tenga la sdk oficial encima del sdk de open2x. lib en lib, bin en bin, etc..
Con suerte podrás hacer un make y compilar con el sdk oficial asi como el que no quiere la cosa.
Pero antes de nada, asegurate de que el entorno actual que tienes compila bien el bennu, no vaya a ser que empiezes a tocar cosas y resulte que no verificastes antes que el entorno cygwin/open2x que tienes vaya.
Quote from: Drumpi on March 13, 2010, 07:11:16 PM
Futublog, no te confundas: una cosa es compilar Bennu y otr muy distinta es compilar en/para Bennu. Yo estoy intentando compilar el intérprete Bennu para la consola GP2X, que como está medio abandonada tengo que hacer como Juan Palomo (yo me lo guiso, yo me lo como).
Actualmente, para jugar en la F100 tienes que hacer tu DCB (o no, porque el BGDC también está portado), tener el runtime de Bennu para GP2X (está en las descargas del concurso) y el firm Open2X (que es lo que estoy intentando evitar, a ver si puede funcionar en cualquier firm).
En fin, parece ser que tengo la cosa complicada si no he obtenido respuesta :S
No quiero instalar el SDK para Linux (lo que simplificaría mucho las cosas) porque tengo que hacer el proyecto y no quiero tener conflictos entre las toolchains de GP2X, las del OMAP y las de la madre que...
buf, nunca debi salir del game-editor, ja ja ja
DCelso: uf, eso es un poco... tendría que ver cómo instalarlo de nuevo, y eso no me asegura que funcione porque ¿y no se sobreescriben todos los ficheros? ¿y si usa un binario del open2x no compatible con el resto?
Bueno, a ver si cuando reinicie vuelvo a compilar la libiconv y funciona, porque de verdad, que no me acuerdo qué se obtenía al hacer eso ni qué se hacía con ello. Recuerdo hasta cómo se tocaba los makefiles, pero ese paso en concreto no (lo cual tiene mérito para haberse hecho en dos noches a las 4 am ^^U).
esa es la idea, sobrescribir todo lo que traiga la sdk open2x y por lo de la sdk oficial y si falta algo pues tiraría de la de open2x así te aseguras que el resultado compila y que estás usando todas las libs oficiales y si faltase alguna lib en el paquete oficial pues tirarias de las de open2x.
Por eso te insisto en que primero tengas un entorno open2x que compile bennu, como tenías en antaño. Y cuando lo tengas, zass cambiazo al canto y a recompilar, así tirarías de las libs oficiales de iconv y de libc que son las que parece que te daban problemas :D.
Ya se que es un poco chapu, pero cuando tengas el binario final que funcione, pues ya si quieres pueder ir intentando en hacer un entorno limpio con las sdk oficiales añadiendo lo que te vaya pidiendo poco a poco. :D.
Es que entonces arriesgo la integridad del sistema que tengo ahora, que es el que, al menos, compila las versiones para el firm open2X (si, funciona, no lo he tocado).
Supongo que podría hacer una copia y luego machacar...
Pero quiero agotar antes otra vía ¿alguien sabe cómo compilar Bennu a través de Dev-C++? Es que he leido que han sacado un nuevo SDK para WIZ y me acordé que tenía este, que es el oficial.
¿Qué sería? ¿Meterme en la carpeta del BGDC, abrir todos los .c .cpp .h en un proyecto nuevo (¿vacío o ejecutable? supongo que vacío, porque ejecutable me generaría un .gpe) y darle al botón de compilar? ¿y luego repetir el proceso con BGDI y seguir con los módulos uno a uno?
Nope, es un poco más complejo, tienes que crear muchos proyectos independientes unos de otros.
Josebas hizo un esquema que tiene a medias que te puede ayudad. (Si al final tiene utilidad y todo :D.)
Primero tienes que buscar todas las external lib que tiene bennu a ver si existen ya compiladas en gp2x.
Segundo para las external lib que no estén compiladas debes de buscar su código fuente y compilarlas para obtener su *.dll necesario para Bennu. Esto es recursivo, es decir puede que una external lib necesite a otra lib que no esté compilada para gp2x y tengas que buscar su código fuente para compilarla y generar el *.dll que necesita tu externa lib.
(Este paso será el que es un montón de rollo a no ser que tengas suerte y te encuentres todo ya en *dll en gp2x)
Tercero para las external lib que ya estaban compiladas en *.dll necesitarás instalar en tu entorno sus "*.h", normalmente vienen en un paquete a parte llamado "developers" ejemplo "dev-Nombrelib.zip".
Cuarto tendrías que crear un proyecto por cada lib*.dll que tiene bennu y compilarlos. Su resultado servirá para los demás. Aqui te puedes encontrar con peculiaridades de tu sistema operativo que te obligarán a cambiar algunos parámetros de configuración de tu entorno para que compile (algunas macros al gcc por ejemplo -DHAVE_BOOLEAN), tienes que configurar tu entorno para que tire de los directorios de "headers" y "lib" de bennu de los que dependa cada lib, y además tienes que enlazar con los lib de los que dependa también.
Quinto tendrías que crear un proyecto por cada *.exe que tiene bennu (bddi, bgdc). Aqui tienes que hacer lo mismo que para los lib.
Sexto tendrías que crear un proyecto por cada mod*.dll que tiene bennu y compilarlos. Aqui tienes que hacer lo mismo para los lib y exe.
Por tanto intentar hacer los dos ultimos paso, podría valer si tienes ya hechos todos los anteriores :D.
De todas formas, eso es una tarea muy peliaguda y pesada ya que tienes que ir uno a uno creando los proyectos devcpp que necesitas. Eso estaría de poca madre tenerlo para la posteridad pero es trabajo de peón :D.
Para eso nacieron las autotools (que más tarde surgió su rival cmake :) ) que sirven para abstraer el usuario la continua reconstrucción de makefiles para cada entorno. Estas se encargan de testear tu sistema y ver qué tienes instalado y qué no tienes instalado y te va avisando de lo que necesitas ( mas bien obligando a instalar porque sino no puedes seguir compilando :D) y crearte los makefiles necesarios para tu proyecto que bien puede componerse de un solo ejecutable o bien componerse de muchos *.dll, *.a y *.exe.
Esta opción puede ser más viable, generas todos los makefile que necesita el proyecto BennuGD usando las autotools (supongo que autotools está para gp2x), es decir, ejecutar el comando "configure" y cuando no de errores tendrás ya todos los "Makefile" en todos los directorios, ahora abres un proyecto con devcpp y a ver si te pilla los makefiles y puedes compilarlo.
Pero claro, esto ya no vale para mucho porque si hiciste eso lo más cómodo es hacer "make" y obtener los binarios sin necesidad de usar el devcpp :D.
En mi opinión pasar el proyecto Bennu a cmake podría ser una muy buena opción ya que es mas facil de entender y mas facil de usar que autotools y cada vez está para más sistemas :D. Pero hablando con SplinterGU me dijo que no le gustaba cmake y prefería autotools así que por él no se haran los archivos cmake necesarios para compilar el proyecto :D.
los dolores de cabeza que tengo con cmake que tienen productos auxiliares que uso en proyectos laborales...
Una preguntilla: he visto que para usar las autotools del SDK oficial en Linux, se tienen que setear determinadas variables del sistema para que apunten a ellas, por lo que al terminar hay que volver a setearlas a sus valores anteriores. Si yo hago esos cambios y llamo a configure/make desde un script .sh ¿los cambios son permanentes o sólo durante el proceso de compilación, como me dan a entender?
Es que podría hacer eso, meter las de Linux y fin del problema, pero de nuevo: necesito tener luego el sistema ready-to-go para el proyecto (tengo que meterle el open-embedded, el git tree de angstrom, el eclipse...).
Eso ya es cosa del funcionamiento de linux.
A ver si en el script creas una variable sin ningún tipo de parámetro, solo es visible únicamente por el script principal, ni siquiera los scrips que llames desde dentro de éste verán esa variable.
Si luego haces un export de la variable, con la funcion llamada export, ya si que lo verán los demás scripts, y se quedará permanente para tu sesión de usuario.
Quiere decir que si entras por otro terminal o si entra otro usuario esa variable exportada no la verá tampoco.
exacto, si quieres que algo se vea en todos los usuarios debes ponerlo en /etc/profile o en el .profile del home de cada usuario, asi queda permanente para los usuarios que se lo hayas seteado...
Ah, mejor, porque si por ejemplo me instalo el SDK oficial de GP2X y tengo que modificar la variable CROSS_COMPILER, lo hago desde el script y así, cuando vuelva al proyecto, mantengo el valor original de la variable (que luego se me olvida setearla de nuevo, esa o cualquier otra, y pierdo el día entero viendo pantallazos negros en la beagle).
Gracias.
Bueno, mis impulsos me han llevado de nuevo a este punto.
Lo cierto es que parece que he aprendido bastante de toolchains y compiladores cruzados en este tiempo (no se si gracias a vosotros y este intento de port, o al proyecto de fin de carrera) porque he estado leyendo el sh para establecer las variables del sistema y lo entiendo casi entero :P
Bueno, que había cogido el SDK para recompilar el módulo rt2570.o para la negrita, que no funciona en open2x, para ver si encontraba alguna forma (aunque fuera rara) de comunicarme con la beagleboard (que está de "antisocial" que marea), y no se cómo, he encontrado otro SDK con el famoso crt1.o entre sus ficheros (¿pero cuantos SDK tengo aquí metidos?).
Así que me dije "vamos a intentarlo de nuevo".
Un ./configure (chorizo de letras, que ahora sí entiendo) me ha dado el siguiente error:
checking for des_ecb_encrypt in -ldes... no
configure: error: libdes library not found
Normal, se me había olvidado compilarla de la carpeta "vendor". Me voy allí y hago configure... ups, no existe configure. Bueno, pues make:
$ make
gcc -DRAND -O3 -fomit-frame-pointer -c -o rpw.o rpw.c
gcc -DRAND -O3 -fomit-frame-pointer -o rpw rpw.o libdes.a
rpw.o:rpw.c:(.text+0x3d): undefined reference to `_des_read_password'
rpw.o:rpw.c:(.text+0xc1): undefined reference to `_des_read_2passwords'
collect2: ld returned 1 exit status
make: *** [rpw] Error 1
Y aquí me he quedado, porque no me acuerdo de los pasos que seguí hace casi un año ^^U
Creo recordar que aun sigo usando los makefiles sin modificar, y no quiero usarlos aun (es más, no tuve problemas al compilar la libdes anteriormente). A ver si Splinter se acuerda de esto o si alguien sabe qué está pasando (porque esto tiene pinta de ser cosa del propio código).
cuando ejecutas el script de las variables, con ". ./script.sh" al final te aparece un texto que dice como hacer el configure... eso mismo tenes que hacer con los configure...
por otro lado, ya no se usa mas la libdes, ahora se usa la openssl, tenes que bajarla y compilarla.
Es lo que he hecho: ejecuto el script que configura las rutas y los programas para compilar, me he ido a la carpeta vendor/des-4.04b y escribo:
$ ./configure --prefix=${PREFIX} --target=${TARGET} --host=${HOST} --build=${BUILD} --enable-shared
obteniendo
bash: ./configure: No such file or directory
Quiero intentarlo con la versión que tengo, porque entre otras cosas, se me ha estropeado el PC donde tenía configurado el tortoise, y ahora no puedo acceder al CVS (a menos que ubuntu ya lo tenga preinstalado y yo no lo sepa).
¿La carpeta de las toolchains bin/pkg-config es necesaria? ¿tendría algo que ver con esto?
Bueno, he retomado el anterior port y le pasa exactamente igual, no se qué pasa. Supongo que tendré que meterle los makefiles del antiguo port, que supongo que evitan el uso de esa librería.
También tendré que buscar por internet, porque tengo CVS en ubuntu, pero no tengo ni repajolera idea de cómo va ^^U
Nada, mientras no se qué hacer, he podido descargar bennu del SVN, y openssl de http://www.openssl.org/source/
He ejecutado el script para establecer las variables del entorno y me he ido a la carpeta del openssl. La linea:
$ ./configure --prefix=${PREFIX} --target=${TARGET} --host=${HOST} --build=${BUILD} --enable-shared
No sirve con esto. Dice:
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher>...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]
Por lo que, después de leer un poquillo la información que me da he conseguido configurarlo mediante:
$ ./configure --prefix=${PREFIX} no-hw no-asm Cygwin
Con la salida que adjunto en el log.txt.
Sin embargo, make no funciona: obtengo el log2.txt y
cryptlib.c:1: error: bad value (i486) for -march= switch
make[1]: *** [cryptlib.o] Error 1
make: *** [build_crypto] Error 1
Y aquí ya me pierdo.
Mientras, a ver si hago funcionar la anterior versión (o configuro eclipse para la BB ;D).
tenes que hacer ./Configure <la plataforma>
supongo que es arm... no se, no pusiste las opciones que aparcen cuando te tira eso...
$ ./config -h
Usage: config [options]
-d Add a debug- prefix to machine choice.
-t Test mode, do not run the Configure perl script.
-h This help.
Any other text will be passed to the Configure perl script.
See INSTALL for instructions.
Operating system: i686-whatever-cygwin
Configuring for Cygwin
/usr/bin/perl ./Configure Cygwin
Por eso creo que está bien. Antes conseguía una lista enorme de posibles candidatos, pero no me acuerdo como me salió ^^U
Uh? ahora compila?
no
./Configure
por otro lado, vos no tenes cygwin, tenes mingw... pero aun asi, no estas armando la version para windows, sino para arm...
No, yo tengo cygwin. He hecho el configure con
./configure --prefix=${PREFIX} Cygwin
y ha ido bien... hasta que make me ha largado un:
making all in test...
make[1]: Entering directory `/home/Administrator/bennugd143/openssl-1.0.0/test'
make[2]: Entering directory `/home/Administrator/bennugd143/openssl-1.0.0/test'
( :; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto }"; LDCMD="${LDCMD:-gcc}"; LD
FLAGS="${LDFLAGS:--DOPENSSL_THREADS -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -DL_EN
DIAN -fomit-frame-pointer -O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOP
ENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5
_ASM -DRMD160_ASM -DAES_ASM -DWHIRLPOOL_ASM}"; LIBPATH=`for x in $LIBDEPS; do ec
ho $x; done | sed -e 's/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed -e
's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${
APPNAME:=md2test.exe} md2test.o ${LIBDEPS} )
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o):(.text+0xab):
undefined reference to `_WinMain@16'
collect2: ld returned 1 exit status
make[2]: *** [link_app.] Error 1
make[2]: Leaving directory `/home/Administrator/bennugd143/openssl-1.0.0/test'
make[1]: *** [md2test.exe] Error 2
make[1]: Leaving directory `/home/Administrator/bennugd143/openssl-1.0.0/test'
make: *** [build_tests] Error 1
Voy a intentarlo con configure a pelo, si no, hago un make -i porque no creo que los test sean algo importante para compilar bennu ¿o si? (bueno, test y un par de errores más que me da por ahi delante).
EDIT: vale, configure sólo me da
$ ./configure
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher>
...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[
no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix
=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:
flags]
pick os/compiler from:
BC-32 BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8
BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-pre1.3 DJGPP MPE/iX-gcc OS2-EMX
OS390-Unix QNX6 QNX6-i386 ReliantUNIX SINIX SINIX-N UWIN VC-CE VC-WIN32
VC-WIN64A VC-WIN64I aix-cc aix-gcc aix3-cc aix64-cc aix64-gcc aux3-gcc
beos-x86-bone beos-x86-r5 bsdi-elf-gcc cc cray-j90 cray-t3e darwin-i386-cc
darwin-ppc-cc darwin64-ppc-cc darwin64-x86_64-cc dgux-R3-gcc dgux-R4-gcc
dgux-R4-x86-gcc dist gcc hpux-cc hpux-gcc hpux-ia64-cc hpux-ia64-gcc
hpux-parisc-cc hpux-parisc-cc-o4 hpux-parisc-gcc hpux-parisc1_0-cc
hpux-parisc2-cc hpux-parisc2-gcc hpux64-ia64-cc hpux64-ia64-gcc
hpux64-parisc2-cc hpux64-parisc2-gcc hurd-x86 irix-cc irix-gcc irix-mips3-cc
irix-mips3-gcc irix64-mips4-cc irix64-mips4-gcc linux-alpha+bwx-ccc
linux-alpha+bwx-gcc linux-alpha-ccc linux-alpha-gcc linux-aout linux-armv4
linux-elf linux-generic32 linux-generic64 linux-ia32-icc linux-ia64
linux-ia64-ecc linux-ia64-icc linux-ppc linux-ppc64 linux-s390x linux-sparcv8
linux-sparcv9 linux-x86_64 linux64-sparcv9 mingw mingw64 ncr-scde netware-clib
netware-clib-bsdsock netware-clib-bsdsock-gcc netware-clib-gcc netware-libc
netware-libc-bsdsock netware-libc-bsdsock-gcc netware-libc-gcc newsos4-gcc
nextstep nextstep3.3 osf1-alpha-cc osf1-alpha-gcc purify qnx4 rhapsody-ppc-cc
sco5-cc sco5-gcc solaris-sparcv7-cc solaris-sparcv7-gcc solaris-sparcv8-cc
solaris-sparcv8-gcc solaris-sparcv9-cc solaris-sparcv9-gcc solaris-x86-cc
solaris-x86-gcc solaris64-sparcv9-cc solaris64-sparcv9-gcc solaris64-x86_64-cc
solaris64-x86_64-gcc sunos-gcc tandem-c89 tru64-alpha-cc uClinux-dist
uClinux-dist64 ultrix-cc ultrix-gcc unixware-2.0 unixware-2.1 unixware-7
unixware-7-gcc vos-gcc vxworks-mipsle vxworks-ppc405 vxworks-ppc750
vxworks-ppc750-debug vxworks-ppc860 debug debug-BSD-x86-elf debug-Cygwin
debug-VC-WIN32 debug-ben debug-ben-debug debug-ben-no-opt debug-ben-openbsd
debug-ben-openbsd-debug debug-ben-strict debug-bodo debug-darwin-i386-cc
debug-darwin-ppc-cc debug-geoff32 debug-geoff64 debug-levitte-linux-elf
debug-levitte-linux-elf-extreme debug-levitte-linux-noasm
debug-levitte-linux-noasm-extreme debug-linux-elf debug-linux-elf-noefence
debug-linux-generic32 debug-linux-generic64 debug-linux-ia32-aes
debug-linux-pentium debug-linux-ppro debug-linux-x86_64 debug-rse
debug-solaris-sparcv8-cc debug-solaris-sparcv8-gcc debug-solaris-sparcv9-cc
debug-solaris-sparcv9-gcc debug-steve-opt debug-steve32 debug-steve64
debug-ulf debug-vos-gcc
NOTE: If in doubt, on Unix-ish systems use './config'.
Usando config me lo configura para Cygwin.
Nada, mismo error al hacer make, y me pasa tres veces en total en la carpeta "test".
¿Sigo? ¿no sigo? ¿debo hacer "make install"?
drumpi... dije "C"onfigure...
MAYUSCULAS LA "C"... si vas a compilarlo para gp2x no va cygwin... lo que estas definiendo es el target... fijate que eso lo encontras en el setvars... tenes que mirar un poquito los datos que detecta e informa... no es magica la cosa...
Tomo nota de la (maldita) mayúscula.
Pero te recuerdo que la versión anterior la compilé con cygwin, como funcionar funciona, lo que pasa es que mi nivel de sabiduría con autotools es equiparable al nivel de violencia de Pocoyó, y seguro que hay cosas de la configuración del entorno o de la compilación que desconozco.
No, si al final tendré que aprovechar eclipse y las gcc que estoy usando para trabajar con la beagle para compilar para gp2x ^^U
compila, que no es lo mismo que funcionar...
compila, pero compila la version para windows, vos no necesitas la version para windows, sino para gp2x...
no se que es Pocoyó, pero me causo gracia...
no por favor! eclipse no!
Hombre, compilar compila (por cierto, da los mismos errores con mayusculas que con minúsculas), pero dudo mucho que no funcione, teniendo en cuenta que tanto target como host son máquinas arm-gp2x-linux, y que los únicos compiladores/linkadores/etc son los de las toolchains (vamos, que yo no he visto ninguno que sea para x86) :P
Además, así lo compilé la última vez y me consta que funciona :)
Por cierto, suponiendo que funcionase, ¿el siguiente paso con openssl cual es? make install, o añadir al path, o qué.
Síiiiii, ecliiiiipseeee, uuuuuuuhhh.
Nah, es lo que me pidió mi profesor que usase con la Beagle, supongo que será por lo fácil que es de configurar, no se, pero como me he tenido que descargar e instalar el Sourcery G++ Lite de CodeSourcery para usarlo con ella, lo mismo viene el compilador para el ARM de la gp2x.
Por cierto, Pocoyó es una pequeña serie de animación 3D para niños de hasta 3 ó 4 años hecha aquí en España, y que ha alcanzado éxito internacional rápidamente. Supongo que andará por youtube, porque son capítulos de apenas 5 minutos.
¡PAJAROTOOOO!
hazme caso por favor, no es cygwin.
para wiz yo uso los siguientes parametros:
no-asm no-dso no-krb5 --prefix=/opt/openwiz/toolchain/arm-openwiz-linux-gnu enable-shared gcc
te tienen que servir lo mismo... cambiando el path...
Okis, mañana lo miro de nuevo... pero me va a pedir la máquina o que, en su defecto, use "config" en lugar de "configure".
no, no
ni config ni configure...
./Configure no-asm no-dso no-krb5 --prefix=/opt/openwiz/toolchain/arm-openwiz-linux-gnu enable-shared gcc
Tras Configure:
Configured for gcc.
The library could not be configured for supporting multi-threaded
applications as the compiler options required on this system are not known.
See file INSTALL for details if you need multi-threading.
You gave the option 'shared'. Normally, that would give you shared libraries.
Unfortunately, the OpenSSL configuration doesn't include shared library support
for this platform yet, so it will pretend you gave the option 'no-shared'. If
you can inform the developpers (openssl-dev\@openssl.org) how to support shared
libraries on this platform, they will at least look at it and try their best
(but please first make sure you have tried with a current version of OpenSSL).
Y tras make:
make[2]: Entering directory `/home/Administrator/bennugd143/openssl-1.0.0/test'
( :; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto }"; LDCMD="${LDCMD:-gcc}"; LD
FLAGS="${LDFLAGS:--O3}"; LIBPATH=`for x in $LIBDEPS; do echo $x; done | sed -e '
s/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; LD_LIBRAR
Y_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=md2test} md2t
est.o ${LIBDEPS} )
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o):(.text+0xab):
undefined reference to `_WinMain@16'
collect2: ld returned 1 exit status
make[2]: *** [link_app.] Error 1
make[2]: Leaving directory `/home/Administrator/bennugd143/openssl-1.0.0/test'
make[1]: *** [md2test] Error 2
make[1]: Leaving directory `/home/Administrator/bennugd143/openssl-1.0.0/test'
make: *** [build_tests] Error 1
Me fastidian mucho estos errores, incluso uno similar me está dando ahora el "hola mundo" de la beagle :S
proba con la 0.9.8k
Quote from: SplinterGU on May 14, 2010, 11:42:43 AM
no, no
ni config ni configure...
./Configure no-asm no-dso no-krb5 --prefix=/opt/openwiz/toolchain/arm-openwiz-linux-gnu enable-shared gcc
Por eso odio Linux... xD
Quote from: Windgate on May 15, 2010, 01:56:29 PM
Quote from: SplinterGU on May 14, 2010, 11:42:43 AM
no, no
ni config ni configure...
./Configure no-asm no-dso no-krb5 --prefix=/opt/openwiz/toolchain/arm-openwiz-linux-gnu enable-shared gcc
Por eso odio Linux... xD
Tiene gracia, porque estoy usando Windows :D :D :D
jajajaja...
Quote from: SplinterGU on May 14, 2010, 07:22:43 PM
proba con la 0.9.8k
make[2]: Entering directory `/home/Administrator/bennugd143/openssl-0.9.8k/test'
( :; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto }"; LDCMD="${LDCMD:-/opt/sdko
ficial2/bin/arm-gp2x-linux-gcc}"; LDFLAGS="${LDFLAGS:--O3}"; LIBPATH=`for x in $
LIBDEPS; do if echo $x | grep '^ *-L' > /dev/null 2>&1; then echo $x | sed -e 's
/^ *-L//'; fi; done | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; LD_LIBR
ARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=rc5test} rc
5test.o ${LIBDEPS} )
/opt/sdkoficial2/bin/../lib/gcc/arm-gp2x-linux/3.4.6/../../../../arm-gp2x-linux/
lib/crt1.o: In function `_start':
init.c:(.text+0x2c): undefined reference to `main'
collect2: ld returned 1 exit status
make[2]: *** [link_app.] Error 1
make[2]: Leaving directory `/home/Administrator/bennugd143/openssl-0.9.8k/test'
make[1]: *** [rc5test] Error 2
make[1]: Leaving directory `/home/Administrator/bennugd143/openssl-0.9.8k/test'
make: *** [build_tests] Error 1
En serio, creo que se podría intentar con "make -I" para que ignorase los errores, al fin y al cabo, sólo dan error archivos de la carpeta "test", no creo que hagan falta para compilar Bennu en sí.
Lo que pasa es que Bennu no encuentra los archivos de openssl, por eso pregunto por el siguiente paso ¿era make install? Luego, si da problemas con el core o con las librerías, pues se corrige.
ahhh, son los tests... si, los tests dan error...
esto le hiciste make, cierto?
de ser asi, dale ahora:
make install...
o fijate en el makefile, que copia cuando hace install y copialo a mano.
los tests no compilan.
disculpame que te haya hecho perder tiempo, pero ayer estaba a mil (hoy tambien) y no lei en detalle los mensaje de error.
No te mato porque esto parece que compial (y conste que llevaba 3 días con lo mismo ;D).
Bueno, que hasta la carpeta core está compilado, pero me ha dado un warning un poco raro (copio y pego los dos últimos párrafos, que es lo que puedo copiar):
make[2]: Leaving directory `/home/Administrator/bennugd143/core/bgdc/src'
make[2]: Entering directory `/home/Administrator/bennugd143/core/bgdc'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/home/Administrator/bennugd143/core/bgdc'
make[1]: Leaving directory `/home/Administrator/bennugd143/core/bgdc'
Making all in bgdi
make[1]: Entering directory `/home/Administrator/bennugd143/core/bgdi'
Making all in src
make[2]: Entering directory `/home/Administrator/bennugd143/core/bgdi/src'
/opt/sdkoficial2/bin/arm-gp2x-linux-gcc -DPACKAGE_NAME=\"bennu\" -DPACKAGE_TARNA
ME=\"bennu\" -DPACKAGE_VERSION=\"1.0.0\" -DPACKAGE_STRING=\"bennu\ 1.0.0\" -DPAC
KAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DH
AVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ST
RINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H
=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"bennu\" -DVERSION=\"1.0.0\" -I. -DTARGET_G
P2X_WIZ -O2 -ffast-math -fomit-frame-pointer -mcpu=arm920t -DARM -D_ARM_ASSEM_ -
I/opt/sdkoficial2/include -I/opt/sdkoficial2/include/libxml2 -I/opt/sdkoficial2/
include/SDL -O2 -finline-functions -fno-strict-aliasing -Wall -DTARGET_LINUX -D
TARGET_GP2X_WIZ -O2 -ffast-math -fomit-frame-pointer -mcpu=arm920t -DARM -D_ARM_
ASSEM_ -I/opt/sdkoficial2/include -I/opt/sdkoficial2/include/libxml2 -I/opt/sdko
ficial2/include/SDL -I../../include -I../include -I../../bgdrtm/include -DDEBUG
-D__BGDI__ -DTARGET_GP2X_WIZ -O2 -ffast-math -fomit-frame-pointer -mcpu=arm92
0t -DARM -D_ARM_ASSEM_ -I/opt/sdkoficial2/include -I/opt/sdkoficial2/include/lib
xml2 -I/opt/sdkoficial2/include/SDL -O2 -finline-functions -fno-strict-aliasing
-MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
mv -f .deps/main.Tpo .deps/main.Po
/bin/sh ../../libtool --tag=CC --mode=link /opt/sdkoficial2/bin/arm-gp2x-linux
-gcc -DTARGET_GP2X_WIZ -O2 -ffast-math -fomit-frame-pointer -mcpu=arm920t -DARM
-D_ARM_ASSEM_ -I/opt/sdkoficial2/include -I/opt/sdkoficial2/include/libxml2 -I/
opt/sdkoficial2/include/SDL -O2 -finline-functions -fno-strict-aliasing --as-ne
eded -L/opt/sdkoficial2/lib -o bgdi main.o -L/opt/sdkoficial2/lib -lc -ldl -L/o
pt/sdkoficial2/lib -L../../bgdrtm/src/.libs -lbgdrtm
*** Warning: Linking the executable bgdi against the loadable module
*** libbgdrtm.so is not portable!
libtool: link: /opt/sdkoficial2/bin/arm-gp2x-linux-gcc -DTARGET_GP2X_WIZ -O2 -ff
ast-math -fomit-frame-pointer -mcpu=arm920t -DARM -D_ARM_ASSEM_ -I/opt/sdkoficia
l2/include -I/opt/sdkoficial2/include/libxml2 -I/opt/sdkoficial2/include/SDL -O2
-finline-functions -fno-strict-aliasing --as-needed -o .libs/bgdi main.o -L/op
t/sdkoficial2/lib -lc -ldl -L/home/Administrator/bennugd143/core/bgdrtm/src/.lib
s /home/Administrator/bennugd143/core/bgdrtm/src/.libs/libbgdrtm.so -Wl,-rpath -
Wl,/opt/sdkoficial2/lib
make[2]: Leaving directory `/home/Administrator/bennugd143/core/bgdi/src'
make[2]: Entering directory `/home/Administrator/bennugd143/core/bgdi'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/home/Administrator/bennugd143/core/bgdi'
make[1]: Leaving directory `/home/Administrator/bennugd143/core/bgdi'
make[1]: Entering directory `/home/Administrator/bennugd143/core'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/home/Administrator/bennugd143/core'
BGDC y BGDI están hechos. Si libbgdrtm.so también debería estar, no la encuentro (panic). Voy a ver qué me dice de los módulos.
PD: por si sirve de algo, el make me ha dicho al compilar la SSL que era compatible con el compilador, pero no con el precompilador ???
PD2: ya he intentado configurar los módulos con éste resultado:
checking for /opt/sdkoficial2/bin/arm-gp2x-linux-gcc option to accept ISO C89...
(cached) none needed
checking for fabs in -lm... yes
checking for sdl-config... no
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!
Me he fijado, las SDL están en PREFIX/HOST/lib, todas las .so. Los .h están en PREFIX/include/SDL.
ese error no es SSL, es SDL, no estan en los paths correctos...
el bgdrtm esta en bgdrtm/src/.libs
el configure de los modulos recordar poner el --with-bennu-prefix=<path donde esta el core>
pero ya habiamos compilado los modulos antes y estaban las SDL...
Librería encontrada.
Parámetro añadido al configure de los módulos.
Sí, anteriormente habíamos conseguido compilarlos, pero ahora es un intento con otras toolchains, las oficiales, no son las mismas (de ser las anteriores no me comería tanto la cabeza), a ver si de una vez funciona con cualquier firm de gp2x.
Entonces ¿cual es la sugerencia? ¿modificar los paths (¿dónde?) o copiar las SDL a dicha carpeta?
Es un fallo detrás de otro: he conseguido cambiar manualmente el directorio de la SDL y me la ha pillado. Luego ha sido la libPNG, lo cual se ha solucionado descargando el código fuente, usando el mismo comando configure que para el core, make y make install.
Ahora es la SDL_mixer, pese a estar en la misma carpeta que la SDL, pero la última, la 1.2.11 me da problemas al compilar (una función que no encuentra). También que no encuentra la mikmod y un par de librerías más, pero de momento no es lo importante, sólo necesito las SDL para compilar los módulos, para que no se me queje el linker. Voy a ir probando versiones, pero si alguien sabe cual es la que seguro funciona o la que usa la GP2X, que lo diga, pliiiiis :)
Detalle del error:
load_aiff.c: In function `Mix_LoadAIFF_RW':
load_aiff.c:180: error: `RW_SEEK_SET' undeclared (first use in this function)
load_aiff.c:180: error: (Each undeclared identifier is reported only once
load_aiff.c:180: error: for each function it appears in.)
make: *** [build/load_aiff.lo] Error 1
Nada, sólo para mantener al corriente al interesado en el proyecto (no creo que le interese a nadie más ^^U).
Anoche conseguí compilar más o menos todas las librerías necesarias para compilar Bennu (SDL, SDL_mixer, libPNG y openSSL, pero las versiones que usa el firm oficial de GP2X), a ver si así no se me queja más. A ver si en un rato me da por compilar los módulos y no hay más problemas, y tenemos una versión de Bennu más "oficial".
No hay más interesados... Como no lo consigas ya verás.... ;D
Bueno, de momento otro problema que no me deja hacer nada, es más, se cierra el cygwin:
bash: error: cannot find install-sh, install.sh, or shtool in "/usr/bin" "/usr/bin/.." "/usr/bin/../.."
Y este no tengo ni idea de qué es lo que pasa ni qué es lo que es ni he podido localizarlo en las toolchains.
Por cierto, lo dije desde el principio: las probabilidades de que yo lo consiga son del 10%... aunque últimamente han subido al 25% ;D
el ". " antes de la ejecucion va solo en el script de setvars...
no entiendo como puede cerrarse el "MSYS", a menos que a todo le pongas ". "
Pues sí, era eso.
Aun así, sigue empeñado en no reconocerme la SDL_mixer:
$ ./configure --prefix=${PREFIX} --target=${TARGET} --host=${HOST} --build=${BU
ILD} --enable-shared --with-bennu-prefix=/home/Administrator/bennugd143/core
checking build system type... i686-pc-none
checking host system type... arm-gp2x-linux-gnu
checking target system type... arm-gp2x-linux-gnu
checking for arm-gp2x-linux-gcc... /opt/sdkoficial2/bin/arm-gp2x-linux-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /opt/sdkoficial2/bin/arm-gp2x-linux-gcc accepts -g... yes
checking for /opt/sdkoficial2/bin/arm-gp2x-linux-gcc option to accept ISO C89...
none needed
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by /opt/sdkoficial2/bin/arm-gp2x-linux-gcc... /opt/sdkofici
al2/arm-gp2x-linux/bin/ld.exe
checking if the linker (/opt/sdkoficial2/arm-gp2x-linux/bin/ld.exe) is GNU ld...
yes
checking for BSD- or MS-compatible name lister (nm)... /opt/sdkoficial2/bin/arm-
gp2x-linux-nm -B
checking the name lister (/opt/sdkoficial2/bin/arm-gp2x-linux-nm -B) interface..
. BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 262144
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /opt/sdkoficial2/arm-gp2x-linux/bin/ld.exe option to reload object
files... -r
checking for arm-gp2x-linux-objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for arm-gp2x-linux-ar... /opt/sdkoficial2/bin/arm-gp2x-linux-ar
checking for arm-gp2x-linux-strip... /opt/sdkoficial2/bin/arm-gp2x-linux-strip
checking for arm-gp2x-linux-ranlib... /opt/sdkoficial2/bin/arm-gp2x-linux-ranlib
checking command to parse /opt/sdkoficial2/bin/arm-gp2x-linux-nm -B output from
/opt/sdkoficial2/bin/arm-gp2x-linux-gcc object... ok
checking how to run the C preprocessor... /opt/sdkoficial2/bin/arm-gp2x-linux-gc
c -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if /opt/sdkoficial2/bin/arm-gp2x-linux-gcc supports -fno-rtti -fno-exce
ptions... no
checking for /opt/sdkoficial2/bin/arm-gp2x-linux-gcc option to produce PIC... -f
PIC -DPIC
checking if /opt/sdkoficial2/bin/arm-gp2x-linux-gcc PIC flag -fPIC -DPIC works..
. yes
checking if /opt/sdkoficial2/bin/arm-gp2x-linux-gcc static flag -static works...
yes
checking if /opt/sdkoficial2/bin/arm-gp2x-linux-gcc supports -c -o file.o... yes
checking if /opt/sdkoficial2/bin/arm-gp2x-linux-gcc supports -c -o file.o... (ca
ched) yes
checking whether the /opt/sdkoficial2/bin/arm-gp2x-linux-gcc linker (/opt/sdkofi
cial2/arm-gp2x-linux/bin/ld.exe) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking whether a program can dlopen itself... cross
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether to enable maintainer-specific portions of Makefiles... no
Your machine: arm linux-gnu
checking for arm-gp2x-linux-windres... no
checking for windres... no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-gp2x-linux-strip... (cached) /opt/sdkoficial2/bin/arm-gp2x-linu
x-strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking dependency style of /opt/sdkoficial2/bin/arm-gp2x-linux-gcc... gcc3
checking for arm-gp2x-linux-gcc... (cached) /opt/sdkoficial2/bin/arm-gp2x-linux-
gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether /opt/sdkoficial2/bin/arm-gp2x-linux-gcc accepts -g... (cached)
yes
checking for /opt/sdkoficial2/bin/arm-gp2x-linux-gcc option to accept ISO C89...
(cached) none needed
checking for fabs in -lm... yes
checking for sdl-config... /opt/sdkoficial2/bin/sdl-config
checking for SDL - version >= 1.2.0... cross compiling; assumed OK...
yes
checking for gzsetparams in -lz... yes
checking zlib.h usability... yes
checking zlib.h presence... no
configure: WARNING: zlib.h: accepted by the compiler, rejected by the preprocess
or!
configure: WARNING: zlib.h: proceeding with the compiler's result
checking for zlib.h... yes
checking for png_read_info in -lpng... yes
checking png.h usability... yes
checking png.h presence... no
configure: WARNING: png.h: accepted by the compiler, rejected by the preprocesso
r!
configure: WARNING: png.h: proceeding with the compiler's result
checking for png.h... yes
checking for DES_ecb_encrypt in -lcrypto... yes
checking openssl/des.h usability... yes
checking openssl/des.h presence... no
configure: WARNING: openssl/des.h: accepted by the compiler, rejected by the pre
processor!
configure: WARNING: openssl/des.h: proceeding with the compiler's result
checking for openssl/des.h... yes
checking for Mix_AllocateChannels in -lSDL_mixer... no
configure: error: libSDL_mixer not found!
y añado el log de configure.
No puede ser ¿es posible que el log me esté diciendo que no es capaz de compilar la SDL_mixer porque no encuentra -liconv? ¿No es esa una librería de libiconv, la librería que ya no se usa?
se usa... puede ser que por eso no compile... agregala.
Juer, pues mira, al final después de la libiconv... y la libvorbis, y la libogg... parece que los condenados módulos han caido a la lona por primera vez y se han dejado configurar. Pero el round no ha terminado, tras un intercambio de palabros haciendo make me ha enviado un derechazo. Por suerte lo había previsto y aunque no me había cubierto, el golpe no ha sido doloroso:
In file included from mod_wm.c:41:
/opt/sdkoficial2/include/SDL/SDL_syswm.h:56:22: X11/Xlib.h: No such file or dire
ctory
/opt/sdkoficial2/include/SDL/SDL_syswm.h:57:23: X11/Xatom.h: No such file or dir
ectory
In file included from mod_wm.c:41:
/opt/sdkoficial2/include/SDL/SDL_syswm.h:69: error: syntax error before "XEvent"
/opt/sdkoficial2/include/SDL/SDL_syswm.h:69: warning: no semicolon at end of str
uct or union
/opt/sdkoficial2/include/SDL/SDL_syswm.h:69: warning: no semicolon at end of str
uct or union
/opt/sdkoficial2/include/SDL/SDL_syswm.h:70: warning: type defaults to `int' in
declaration of `event'
/opt/sdkoficial2/include/SDL/SDL_syswm.h:70: warning: data definition has no typ
e or storage class
/opt/sdkoficial2/include/SDL/SDL_syswm.h:71: error: syntax error before '}' toke
n
/opt/sdkoficial2/include/SDL/SDL_syswm.h:82: error: syntax error before "Display
"
/opt/sdkoficial2/include/SDL/SDL_syswm.h:82: warning: no semicolon at end of str
uct or union
/opt/sdkoficial2/include/SDL/SDL_syswm.h:82: warning: no semicolon at end of str
uct or union
/opt/sdkoficial2/include/SDL/SDL_syswm.h:82: warning: no semicolon at end of str
uct or union
/opt/sdkoficial2/include/SDL/SDL_syswm.h:83: warning: type defaults to `int' in
declaration of `window'
/opt/sdkoficial2/include/SDL/SDL_syswm.h:83: warning: data definition has no typ
e or storage class
/opt/sdkoficial2/include/SDL/SDL_syswm.h:93: error: syntax error before "fswindo
w"
/opt/sdkoficial2/include/SDL/SDL_syswm.h:93: warning: type defaults to `int' in
declaration of `fswindow'
/opt/sdkoficial2/include/SDL/SDL_syswm.h:93: warning: data definition has no typ
e or storage class
/opt/sdkoficial2/include/SDL/SDL_syswm.h:94: error: syntax error before "wmwindo
w"
/opt/sdkoficial2/include/SDL/SDL_syswm.h:94: warning: type defaults to `int' in
declaration of `wmwindow'
/opt/sdkoficial2/include/SDL/SDL_syswm.h:94: warning: data definition has no typ
e or storage class
/opt/sdkoficial2/include/SDL/SDL_syswm.h:95: warning: type defaults to `int' in
declaration of `x11'
/opt/sdkoficial2/include/SDL/SDL_syswm.h:95: warning: data definition has no typ
e or storage class
/opt/sdkoficial2/include/SDL/SDL_syswm.h:96: error: syntax error before '}' toke
n
/opt/sdkoficial2/include/SDL/SDL_syswm.h:96: warning: type defaults to `int' in
declaration of `info'
/opt/sdkoficial2/include/SDL/SDL_syswm.h:96: warning: data definition has no typ
e or storage class
/opt/sdkoficial2/include/SDL/SDL_syswm.h:97: error: syntax error before '}' toke
n
/opt/sdkoficial2/include/SDL/SDL_syswm.h:97: warning: type defaults to `int' in
declaration of `SDL_SysWMinfo'
/opt/sdkoficial2/include/SDL/SDL_syswm.h:97: warning: data definition has no typ
e or storage class
/opt/sdkoficial2/include/SDL/SDL_syswm.h:197: error: syntax error before '*' tok
en
mod_wm.c: In function `bgd_move_window':
mod_wm.c:73: error: syntax error before "wminfo"
mod_wm.c:77: error: `wminfo' undeclared (first use in this function)
mod_wm.c:77: error: (Each undeclared identifier is reported only once
mod_wm.c:77: error: for each function it appears in.)
mod_wm.c: In function `bgd_get_window_pos':
mod_wm.c:118: error: syntax error before "wminfo"
mod_wm.c:122: error: `wminfo' undeclared (first use in this function)
mod_wm.c: In function `bgd_get_window_size':
mod_wm.c:168: error: syntax error before "wminfo"
mod_wm.c:170: error: `wminfo' undeclared (first use in this function)
make[1]: *** [mod_wm_la-mod_wm.lo] Error 1
make[1]: Leaving directory `/home/Administrator/bennugd143/modules/mod_wm'
make: *** [all-recursive] Error 1
Sí, mi vieja enemiga mod_wm se sigue negando a pasar por el aro. Ahora tengo la duda de si descargar los fuentes de un paquete de X11 (que no sabría cual tomar, aquí si que me vendría bien el consejo y la experiencia de Splinter con el port a WIZ) o descartarla directamente, como hice hace ya tiempo con el antiguo port.
Conseguir compilar los módulos sería una nueva caida sobre la lona para el ordenador, y si encima funcionan sería la tercera y por tanto un KO técnico.
Ais, si el PFC hiciera lo mismo: ahora tengo un error por culpa del linker, que falla, y me piden que use gcc para ello, pero da otro error... bueno, otro día, las cosas de una en una, que tengo que reservar un núcleo para las peticiones de interrupción desde el puerto familiar ;D
PD: ¿Estos warnings son fatales o podré vivir con ellos?
*** Warning: Linking the shared library mod_timers.la against the loadable modul
e
*** libbgdrtm.so is not portable!
podras vivir con ellos.
Me interesa más la respuesta sobre las X11, pero gracias de todos modos.
PD: Splinter, cuando esto acabe, por tu ayuda, mereces la recompensa máxima del foro: una semana de karmas ;D
ah, iba a ver eso y me olvide... wait...
ese es un error de los headers de SDL oficiales, no tiene por que incluir la X11 si no las tiene...
postea el /opt/sdkoficial2/include/SDL/SDL_syswm.h aca y lo veo...
Ahí lo tienes :)
PD: lo más probable es que no sean las SDL del firm oficial de gp2x, porque acuérdate que compilé yo mismo las SDL por el fallo con la SDL_mixer, pero vamos, lo miro y si acaso machaco con los oficiales ;)
Te paso también el oficial:
proba con este, aunque dudo que funcione...
posiblemente debas probar con alguna nueva sdl.
en wiz compila y tampoco tiene x11
Okis, lo estoy probando, porque el oficial no me ha funcionado tampoco.
Y es que no tengo el día: el PFC tampoco me deja compilar un simple fichero C (y sin embargo, uno con makefiles lo hago del tirón, hasta se cambiar los programas de compilación, pero no me aclaro con las opciones de eclipse). Y con las toolchains a pelo tampoco me compila códigos de cuando aprendía a programar porque no encuentra iostream.h (y aunque se la ponga al lado, y aunque la encierre entre comillas en el código, pasa de mi).
Nada, que no:
m.Tpo -c mod_wm.c -fPIC -DPIC -o .libs/mod_wm_la-mod_wm.o
mod_wm.c: In function `bgd_move_window':
mod_wm.c:73: error: storage size of 'wminfo' isn't known
mod_wm.c:73: warning: unused variable `wminfo'
mod_wm.c: In function `bgd_get_window_pos':
mod_wm.c:118: error: storage size of 'wminfo' isn't known
mod_wm.c:118: warning: unused variable `wminfo'
mod_wm.c: In function `bgd_get_window_size':
mod_wm.c:168: error: storage size of 'wminfo' isn't known
mod_wm.c:168: warning: unused variable `wminfo'
make[1]: *** [mod_wm_la-mod_wm.lo] Error 1
make[1]: Leaving directory `/home/Administrator/bennugd143/modules/mod_wm'
make: *** [all-recursive] Error 1
Pues nada, haré un último intento desde cero y si no, make -i y que se compilen las librerías que tengan ganas.
También podría crear una mod_wm que no haga nada, que tenga las funciones pero vacías, así al menos reconocería las funciones y no habría incompatibilidades entre DCB.
me temia que te iba a dar ese error, pero estaba ilusionado en que quizas esten definidas en otro lugar...
creo que te va a tocar, tocar el mod_wm o el .h de la sdl...
me canse... actualiza nuevamente desde el svn.
deja el include del SDL como estaba originalmente.
Nah, dejalo, total, por una librería par aun cutre port no oficial...
De todas fromas, hay un nuevo error, pero esta vez ejecutando, aquí ya estoy totalmente fuera de juego. Parece que compila bien: no da errores, no saltan las alarmas de la consola y el log de salida es lo que se espera, warnings de variables globales dobladas incluidos. El problema es al ejecutar, que se me vuelve la consola loca si lo lanzo desde telnet (supongo que porque se ejecuta el gmenu dos veces) o que vuelve al menú a traves del lanzador y/o acceso directo.
El misterio misterioso es este mensaje de error via 2>stderr:
../bgd-runtime/bgdi: line 61: /usr/bin/sed: No such file or directory
../bgd-runtime/bgdi: line 65: /usr/bin/sed: No such file or directory
../bgd-runtime/bgdi: line 118: cd: /home/Administrator/bennugd143/core/bgdi/src: No such file or directory
../bgd-runtime/bgdi: line 118: /opt/sdkoficial2/bin/arm-gp2x-linux-gcc: No such file or directory
??? ??? ??? ??? ??? ???
no se de que estas hablando... pero por favor baja el fuente nuevo que con el poco tiempo que tengo me tome la molestia de dedicarle tiempo para que lo puedas compilar...
Vaaaale, mañana haré uso del adsl, que hoy es muy tarde.
Respecto al último mensaje, ya son errores en tiempo de ejecución, hemos pasado la etapa de compilación... bueno, no por la actualización :D :D :D
Una de cal y otra de arena:
La buena es que ha compilado a la primera, y ha generado hasta la mod_wm.so. Buen trabajo, Splinter, como siempre ;)
La mala es que aunque parece que sigue compilando bien:
Quote from: log1BGDC 1.0.0 (May 20 2010 17:57:21)
Copyright © 2006-2010 SplinterGU (Fenix/BennuGD)
Copyright © 2002-2006 Fenix Team (Fenix)
Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix)
Bennu Game Development comes with ABSOLUTELY NO WARRANTY;
see COPYING for details
/mnt/sd/Bennu/MotorTileadoV32/librender:4: warning: Variable redeclared ("ALPHA_STEPS")
/mnt/sd/Bennu/MotorTileadoV32/bgdc.import:13: warning: Variable redeclared ("CTYPE")
/mnt/sd/Bennu/MotorTileadoV32/bgdc.import:13: warning: Variable redeclared ("CNUMBER")
/mnt/sd/Bennu/MotorTileadoV32/libscroll:24: warning: Variable redeclared ("CTYPE")
/mnt/sd/Bennu/MotorTileadoV32/libscroll:24: warning: Variable redeclared ("CNUMBER")
File temp1.dcb compiled (122020 bytes):
Processes 19
Global data 4176 bytes
Local data 244 bytes
Private data 612 bytes
Public data 0 bytes
Code 21720 bytes
System processes 407
Globals vars 29
Locals vars 34
Private vars 102
Publics vars 0
Identifiers 1052
Structs 14
Strings 81 (806 bytes)
El BGDI sigue sin funcionar:
Quote from: err2../bgd-runtime/bgdi: line 61: /usr/bin/sed: No such file or directory
../bgd-runtime/bgdi: line 65: /usr/bin/sed: No such file or directory
../bgd-runtime/bgdi: line 118: cd: /home/Administrator/bennugd144/core/bgdi/src: No such file or directory
../bgd-runtime/bgdi: line 118: /opt/sdkoficial2/bin/arm-gp2x-linux-gcc: No such file or directory
Comprobado que es el BGDI el que hace cosas raras, usandolo con el motor 3D de free, que sólo trae el DCB.
Si necesitas algún log o algun dato más, no dudes en pedirlo.
ahhh, porque estas copiando el bgdi que esta en source... tenes que copiar el que esta en src/.libs
siempre que haya un .libs, tenes que copiar los archivos contenidos ahi.
¿Sabeis esa secuencia en Dragon Ball en que un personaje dice una parida (tontería como un trailer de grande) y todos se caen de espaldas?
Es lo que yo llamo un:
¡¡¡PLONK!!!
si, me acuerdo... entonces?
Bueno, acabo de probarlo y... no me ha gustado lo que he visto.
He visto cómo una demo 3D se rompía en pedazos y se quedaba pillada.
He visto cómo en el Echo los ángulos hacían lo que les daba la gana y los size eran gigantes (o sea, la flecha del menú salía disparada por usar x=160+20*sin(angulo), los disparos iban en diagonal si disparaba a la izquierda y no se movían si lo hacía a la derecha (creo que usaba advance), cuando hago el zoom sobre Echo al coger el arma este empieza con un zoom 3 veces más grande y con una rotación de unos 60º, y cuando sale el 1 de "episode 1" con transparencia aumentando de tamaño y desapareciendo, lo hace rotado y con un escalado al triple (eso sí, un escalado perfecto como no lo había visto antes en bennu)).
Y he visto como un The King of Fighters se quedaba casi sin logo e iba a un 90% de su velocidad (comaparado con las pruebas anteriores).
Luego he cogido y me he metido en el modo compatibilidad (una especie de virtual box con una imagen del firm oficial en modo "solo lectura") y...
¡¡¡¡PERFECTO!!!!
En serio, ha funcionado todo a las mil maravillas, ni un problema de los comentados, es más, hasta el sonido funciona el 100% de las veces (frente al 80% del anterior) y SIN NINGÚN TIPO DE LAG.
La única pega es la velocidad, que es bastante menor (el Echo ya va al 50% de su velocidad nada más empezar). Quizás debería probar a meter las SDL aceleradas por HW de Paeryn a ver si mejora la cosa, y buscar alguna forma de overclockear la consola y activar los RAM timings (creo que eso era cosa del mmuhack.o).
Es raro, ya he conseguido una versión para firm oficial y otra para el normal (supuestamente), pero no compatible con ambas ???
De todas formas, es el momento de que alguien con firm oficial haga la prueba de fuego y diga si funciona sin necesidad de libs alternativas ni nada, a pelo.
http://drumpi.se32.com/cosas/bennugd144.zip
Sería sustituir los archivos del runtime y listo, aunque por si acaso, el GPE "estandar" (o más bien, oficial con ciertas modificaciones) sería algo así:
#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../bgd-runtime
PATH=$PATH:../bgd-runtime
export LD_LIBRARY_PATH
export PATH
echo 2 > /proc/cpu/alignment
for prg in *.prg; do
name=`basename $prg .prg`
bgdc $prg >log1.txt 2>err1.txt
bgdi $name >log2.txt 2>err2.txt
done
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
Así que ¡es hora de probar!
Recomiendo http://drumpi.se32.com/games/echo_gp2x.rar que ya debería venir preparado, salvo que hay que cambiar los archivos del runtime, y ver si las lineas export siguen siendo necesarias :D :D :D
no entendi nada eso que dijiste de las pruebas que se te iban los size, los angulos etc... menos entendi que luego dijiste que funciono todo... vamos a obviar todo esto y quedarnos con lo que funciono...
has dicho que ahora el echo te va al 50% de velocidad... pero si mal no recuerdo en la version con el SDK no oficial, decias que iba casi a la misma velocidad que la wiz... hay algo que no cierra...
podrias explicar un poco mas?
Jejeje, bueno, lo de que funciona o no, cuando alguien lo pruebe en el oficial te lo aclaro.
Respecto a la velocidad, te cuento: el Echo, en la versión del firm Open2X, el primer nivel iba casi a tope, y podía llegar a caer en pantallas con un alto consumo de procesos (como pasa en el segundo nivel, donde hay muchos tiles visibles) a la mitad.
En esta versión cae directamente a la mitad desde el primer nivel cuando tiene que mover el scroll.
Según he leido, las librerías que tiene la GP2X de forma oficial, usan unas SDL algo antiguas, y una serie de librerías que no son óptimas, por lo que la gente sacó una serie de parches sobre los que me tengo que informar ahora. Estas son, por ejemplo, las librerías aceleradas de Paeryn (creo que son unas SDL adaptadas al HW de la consola), o el mmuhack que se usa en el port de Puck de Fenix, a lo que también debería añadir el overclock, que no se puede hacer desde el firm oficial (había que usar algo similar al pollux_set de WIZ).
Por eso la gente no se fiaba del SDK oficial de WIZ, porque todo el mundo aprendió con GP2X que el SDK que se montó la gente por su cuenta era mucho mejor que el que ofrecía GPH.
Por favor, necesito un poco de "feedback" para lanzar una versión definitiva.
En fin, te explico, Splinter:
Como sabes, en GP2X hay dos tipos de firmwares: están los oficiales, lanzados por GPH, y se les conoce por su número de release, desde la 1.0.0 hasta la 4.1.1, siendo los más usados la 2.1.2 y la 3.0.0 por ser los más completos y con menos bugs (sobre todo, por permitir redes por el mini-usb que trae de serie), y el 4.0.1 y 4.1.1 en las GP2X F200 (pantalla táctil) según la antiguedad del modelo.
El otro tipo es el firmware Open2X, que es un firm desarrollado por sceners. Tiene muchas ventajas respecto al oficial, empezando por disponer de código fuente, usar compiladores más modernos, librerías más nuevas y añadir utilidades de serie muy interesantes (programa de overclockeo integrado en GMenu2X, activación de aceleración de memoria RAM, mapeo de un joy usb como los botones de la propia GP2X permitiendo que juegos que no usaban mandos externos puedan hacerlo...).
Pues bien, por lo visto hay ciertos problemas de compatibilidad, que son los que estoy teniendo con el port. La idea es que si funciona en el firm oficial debería hacerlo en el open2x (por aquello de retrocompatibilidad y eso), pero de hacerlo al revés no se ha dicho nada y pude comprobar (dolorosamente) que no era compatible.
Vale. Esta vez hemos compilado Bennu con las librerías oficiales aportadas por GPH.
Probando, por ejemplo, Echo, usando el firm open2x me ha pasado lo siguiente ¿recuerdas que cuando Echo consigue un arma, el personaje se coloca en el centro de la pantalla mientras crece hasta ocupar 1/4 de la pantalla? pues a mi me ha pasado que el personaje ha empezado viéndose con un size de 300 y un angle de 60 y se ha puesto a crecer hasta que un único pixel ocupaba toda la pantalla.
¿Está mal? hay otra prueba. El firm open2X, para esos programas que no van, tiene un "modo compatibilidad", que consiste en un archivo imagen que contiene el firm oficial 2.1.1. Lo que hace es similar al virtualbox: virtualizar un firm oficial sobre el firm open2X.
Pues ejecutando el Echo, tal cual, sin cambios ninguno, funciona perfectamente: Echo crece de un tamaño de 16x16 hasta ocupar 1/4 de la pantalla, sin rotaciones.
Quería esperar a que alguien me confirmase que en un firm oficial también iba bien para asegurarme que era cosa de las librerías de open2x. Todos los fallos parecen tener algo que ver con los ángulos (sin, cos, tan) y con el size (y sospecho que con angle). A ver si te puedo hacer un video para que lo veas.
lo que veo es que estas intentando hacer una carrera con obstaculos cuando recien estas aprendiendo a caminar...
es dificil explicar ciertas cosas cuando el nivel es inicial...
voy a intentar explicar el problema lo mas simple que pueda.
las librerias .so son librerias dinamicas, por lo general, las librerias reales son nombrelibreria.version, por ejemplo, libstdc++.so.6, esto es libstdc++ version 6. Luego normalmente existe un link con el nombre libstdc++.so que apunta a la lib real. Tambien por lo general, las librerias dinamicas estan asociadas a la libreria del kernel, por lo que si cambias el kernel las librerias dejan de funcionar... por eso es logico que tu programa no funcione si lo compilaste para un kernel diferente o incluso para una version de libreria diferente.
Lo que necesitas es tener coherencia entre las librerias en tu kernel y las librerias en tu SDK (crosscompiler).
Posiblemente necesites el kernel que corresponda a tu SDK, o a la inversa.
Como digo, el problema es que necesitas recorrer el camino paso a paso, desde el inicio... puedes preguntar todo lo que quieras, pero muchas veces no podras entenderlo correctamente sin tener ciertos conceptos basicos que aprendes recorriendo el camino paso a paso.
intenta buscar en google agregando la palabra "tutorial", a mi me da muy buenos resultados siempre que necesito aprender algo.
Lo de la versión del kernel no lo tenía yo tan claro (suponía que al linkarse dinámicamente este tipo de problemas no existía porque siempre se hace retrocompatible, cosa con la que me están machacando continuamente en el proyecto como digo en mi último mensaje del hilo de caracoladas), pero el funcionamiento de las .so y del enlazado con las .so.X ya me di cuenta la primera vez que nos pusimos a compilar bennu.
Lo que ha pasado aquí es que me he desesperado pidiendo un port de Bennu para Gp2x, después de oir cosas como "basta con recompilar", "las librerías son casi las mismas que las de wiz", "el entorno viene preparado para usarlo" y luego NADIE ha tenido 5 minutos para demostrarlo. Así que o lo hacía yo o no lo hacía nadie, y claro ¿qué se puede esperar de alguien que sólo ha programado en C++ cogido de la mano y con un IDE preinstalado que funciona presionando un botón? (¿he comentado ya que tardé dos meses y medio en instalar el dichoso IDE en mi PC hasta que funcionó medio bien?).
Tengo ese problema, quiero correr sin saber andar, y pregunto más de lo que debiera porque me desespero buscando, pero creo que aprendo rápido, pillo las cosas apenas me las explican, y además insisto y pruebo mil combinaciones antes de darme por vencido (hoy he rechazado mi hora de consola probando cosas para echar a andar la red USB de mi BB).
Espero que sepas disculparme si te he molestado o te he ofendido o cualquier otro tipo de agravio. Símplemente es que este port es lo único que avanza medio bien (al menos avanza, que es lo que me da ánimos). Si este port da problemas, lo otro me está dando tres veces más, y tengo cinco frentes abiertos a la vez con la esperanza de que alguno funcione.
En serio, necesito salir a la calle a que me de el aire ^^U
no, no me has ofendido para nada... espero no lo haya hecho yo contigo...
deberia bastar con recompilar, solo que tenes que tener el SDK adecuado...
volviendo al tema, fijate si existe alguna libstdc++.so.* en la consola, deberia estar en /usr/lib, otros lugares posibles serian /usr/local/lib...
He llegado tarde ? Tengo aqui mis gp's con el firmawre oficial derretiendose para probar el port :)
Tus 50 karmas se estan cociendo.....
Firmware 1.2.1 --> Funciona pero sin sonido !!!
Firmware 4.1.0 --> Aparentemente todo funciona perfectamente (menos el sonido mod, aunque puede ser por problemas de memória) !!!!
;D ;D ;D ;D ;D ;D ;D ;D ;D
(http://forum.bennugd.org/index.php?action=dlattach;topic=1229.0;attach=1160)
(http://forum.bennugd.org/index.php?action=dlattach;topic=1229.0;attach=1162)
felicitaciones drumpi, parece que funciono!
¡Me cagontó! Me he tenido que enterar por GP-spain de que iba la que estabas haciendo.
Mira que he entrado veces en este hilo, y sólo veía que era una cosa supercomplicada. Me parece que esto me pasa por no leer bien desde el principio.
Enhora buena Drumpi, aquí va mi karma. ;D
Bueno, al menos parece que la cosa funciona, que era lo que quería saber. Ahora toca:
-Cambiar el id de la consola para que reconozca la GP2X en lugar de WIZ.
-Añadir librerías aceleradas y toda la pesca de librerías optimizadas, aceleración del propio HW (overclock, RAM timings...).
-Arreglar los diversos fallos, aunque eso me temo que es cosa de las librerías de sonido, no del propio Bennu.
Yo también tengo karmas que dar :)
Bueno, no debería escribir esto, pero no tengo sueño y me aburro mucho.
Esta tarde le he dado un empujoncito al tema, un pequeño avance para quedarme donde estaba. Lo que quiero decir es que he descargado la última versión de Bennu del SVN (vivan las aplicaciones portables) y he compilado la r147 para el firm oficial de GP2X. Ya está, sin arreglos, añadidos ni nada.
He estado mirando si podía poner la opción de static sólo para las librerías de SDL, pero no he visto nada (y como tenga que ir rebuscando por el configure o los makefiles, me muero).
Respecto a los que tenemos firm Open2X, malas noticias: el salto a openssl le ha sentado como un cactus en la silla a mi entorno. Por suerte sólo escuece (mucho), no mata. Sólo tengo que encontrar la forma de compilar la librería e instalarla, como hice en su día con el firm oficial, pero de momento se me ha presentado un error que no he tenido tiempo de arreglar (ni mirar). Algo acerca de que la librería hace cálculos de coma flotante por HW y se había especificado hacerlo por SW y es incompatible... Bueno, que en ese momento tenía que irme a cenar ^^U
Mañana probaré la versión de firm oficial, y si va bien os la subo. La otra requiere más atención por mi parte, así que toca retraso, que aun me tengo que pelear con el empaquetado de CODECs con el RTSC codec package utility de TI antes de que me caduque la licencia gratuita del entorno de compilación :P
refloto: ¿hay manera de hacer funcionar un juego de Bennu en la gp2x??
Pues claro, no te enteras que ya funcionan, grácias al port de Drumpi. Eso si, algo lento y con algunos fallos menores, pero ya dependera de lo que tenga tu juego. El de los caracoles creo que no tendras problemas, ya que la lentitud de los caracoles será soportada por software ;D
Mientras no intentes hacer andar el SBTime en GP2X, no habrá problemas. No tengo la lista de fallos arreglados desde las versiones compiladas, pero todos los juegos que no usen el modo7 desde hace dos meses, o la mod crypt, deberían funcionar bien o un poco lentos (tened en cuenta que muchos juegos de Bennu se diseñaron para WIZ, no para GP2X).
Estoy pensando en cojer un día y probar a compilar sólo la mod_m7 para echar a andar el SBTime y probar su rendimiento :P
De todas formas, me darán cita para la semana que viene, por lo que es posible que el viernes o el sábado de dicha semana pueda ponerme con algo.
Bueno, de rato en rato y porque me sale barato, que si no no avanzo nada ;D
Vale, después de bajar (aun más) el listón de chistes malos, estoy en disposición de decir que por fin me puedo enfrentar a la compilación de Bennu para GP2X en Linux, ya que nadie con experiencia se pone. De nuevo, recuerdo que lo que voy a intentar es una simple recompilación, nada más. No me pidais que cambie código, parámetros de compilación, etc, porque tengo la misma relación con las toolchains que la que tengo con mi kiosquero: nos vemos de vez en cuando pero no terminamos de conocernos.
Antes de ponerme en harina, hay un par de cosas que me gustaría aclarar... o más bien preguntarle a Splinter.
-¿Por qué la definición de las rutas a las toolchains se encuentra en un fichero aparte y no dentro del mismo makefile, como he visto hacer en varias ocasiones? Es más, algún tutorial que he leido indica que se deben poner ahí.
-A causa de esto, surge la siguiente duda: la última vez me dijiste que con el cygwin/mingw debía invocar al open2x-vars.sh de la siguiente manera:
. ./open2x-vars.sh
Para que al salir de la ejecución del script se mantuvieran los cambios, porque con:
./open2x-vars.sh
la asignación a variables de sistema sólo tenían validez durante la ejecución del script. Entonces, si lo hago como lo he dicho la primera vez ahora en Ubuntu ¿los cambios son permanentes o se borran al cerrar la ventana de comandos? Porque si son permanentes me plantearía añadir las lineas de configure y make al propio script, no quiero tener que volver a cambiarlas porque, simplemente, no sé donde están las toolchains del sistema ^^U
Repito, va a ser un intento, no espereis que funcione, y si lo hace, no prometo que vaya a la velocidad de open2X, se supone que se compila usando las SDL aceleradas por HW de Paeryn, pero ya veremos si no tengo que añadirlas a mano (porque se compilen dinámicamente) y si son compatibles.
Qué éxito. Ninja Drumpi strikes again ;D
A ver si arreglas la velocidad, el sonido, el id, etc. ;D
voy a tener que pasarme a fenix para poder ver resultados en mi negrita...
o al game-editor...
:D
Y yo hacer un cursillo avanzado de Linux, por lo que veo :D :D :D
Sipo, son temporales a tu terminal, probado en debian.
Forma rápida de probar, creas un script.sh que haga export HOLA="hola",
lo invocas como te ha dicho . ./script.sh desde un terminal
abres otro terminal y haces echo $HOLA
si no aparece "hola" entonces es que no se exportaron al sistema.
Gracias, DCelso (karma). He estado leyendo tutoriales y (en teoría) sé hacer scripts con bucles, ifs, variables y envío/recepción de datos en bash... pero sobre eso no he encontrado mucha información (sólo los métodos de invocación de scripts, no su significado ni funcionamiento) :S
Ya empezamos con los problemas: me dice que no encuentra la zlib. Supuestamente, en Ubuntu la tengo instalada, pero no sé si es que la tengo que compilar aparte y añadirla al devkitpro o que tengo un problema de rutas. No os puedo dar información más exacta porque estoy con windows.
;D, yo ya pasé por todo eso, y no te pide la zlib de ubuntu sino la del sdk de gp2x, yo he tenido que hacer lo siguiente:
1.- Bajarme el devkitPro.tar.gz para linux de gp2x de openhandhelds.org y descomprimirlo en /SDKs/devkitGP2X
2.- Bajarme el sdl-libs-211006.zip gp2x de openhandhelds.org y descomprimirlo en /SDKs/devkitGP2X/sdl-libs
3.- Bajarme el codigo fuente openssl-0.9.8q.tar.gz de openssl.org y descomprimirlo en /SDKs/devkitGP2X/src/openssl-0.9.8q
4.- Bajarme el código de bennu en /home/dcelso/workspace_BGD/bennu_devkitGP2X
5.- Copiar caanoo-vars.sh a devkitGP2X-vars.sh y adaptarlo a las rutas del devkit.
A CFLAGS de devkitGP2X-vars.sh añadir la línea -I/SDKs/devkitGP2X/sdl-libs/include
6.- Compilar openssl, para ello abres un terminal y tienes que poner al principo de PATH los dos directorios bin que hay en devkitGP2X
export PATH=/SDKs/devkitGP2X/bin:/SDKs/devkitGP2X/arm-linux/bin:$PATH
ejecutar el script devktiGP2X-vars.sh.
y desde el directorio del código openssl hacer ./config no-asm shared.
Esto genera el libcrypto.so que necesita bennu para GP2X, lo copias a /SDKs/devkitGP2X/arm-linux/lib
7.- Copiar los siguientes archivos desde /SDKs/devkitGP2X/sdl-libs/ a las siguientes rutas
/SDKs/devkitGP2X/arm-linux/lib/libvorbisidec.so.1.0.2
/SDKs/devkitGP2X/arm-linux/lib/libz.a
/SDKs/devkitGP2X/arm-linux/lib/libjpeg.a
/SDKs/devkitGP2X/arm-linux/lib/libjpeg.la
/SDKs/devkitGP2X/arm-linux/lib/libjpeg.so.62.0.0
/SDKs/devkitGP2X/arm-linux/lib/libpng12.a
/SDKs/devkitGP2X/arm-linux/lib/libpng12.so.0.1.2.8
/SDKs/devkitGP2X/arm-linux/lib/libpng.so.3.1.2.8
/SDKs/devkitGP2X/arm-linux/lib/libmad.so.0.2.1
/SDKs/devkitGP2X/arm-linux/lib/libmikmod.so.2.0.4
/SDKs/devkitGP2X/arm-linux/lib/libogg.so.0.5.3
/SDKs/devkitGP2X/arm-linux/lib/libvorbis.so.0.3.1
/SDKs/devkitGP2X/arm-linux/lib/libvorbisfile.so.3.1.1
/SDKs/devkitGP2X/arm-linux/lib/libvorbisenc.so.2.0.2
/SDKs/devkitGP2X/arm-linux/lib/libSDL_mixer-1.2.so.0.2.4
/SDKs/devkitGP2X/arm-linux/lib/libSDL_mixer.a
/SDKs/devkitGP2X/arm-linux/lib/libSDLmain.a
/SDKs/devkitGP2X/arm-linux/lib/libSDL-1.2.so.0.7.2
Y hacer los siguientes enlaces simbólicos a los .so de arriba.
/SDKs/devkitGP2X/arm-linux/lib/libpng.so
/SDKs/devkitGP2X/arm-linux/lib/libSDL.so
/SDKs/devkitGP2X/arm-linux/lib/libvorbis.so
/SDKs/devkitGP2X/arm-linux/lib/libogg.so
/SDKs/devkitGP2X/arm-linux/lib/libvorbisfile.so
/SDKs/devkitGP2X/arm-linux/lib/libmad.so
/SDKs/devkitGP2X/arm-linux/lib/libmikmod.so
/SDKs/devkitGP2X/arm-linux/lib/libvorbisidec.so
/SDKs/devkitGP2X/arm-linux/lib/libvorbisidec.1
/SDKs/devkitGP2X/arm-linux/lib/libvorbisidec.so.1
8- ya con esto abrimos un terminal y nos vamos al codigo fuente de bennu, ejecutamos el script devkitGP2X-vars.sh, y hacemos lo que pone al final de su ejecución, el cd core, ./configure ....etc.
9- esto compila todo el core, pero el directorio modules da un fallo de que no existe SDL_mixer el configure, no lo he podido arreglar de ningunas de las maneras, así que como se que existe y está equivocado el configure :D, he editado el configure para eliminar este chequeo.
así obtienes todo el bgdruntime de bennu para GP2X, la única cosa que tienes que tener en cuenta en tambien copiarte el libcrytpto.so para tu GP2X que fijo que no está, las demás lib deberían de estar, si pide alguna pues es cuestion de ir poniéndoselas.
O sea, todo eso para nada xDDD
No desesperes, ya estoy incando el diente al port perfecto ;)
:D, :'(
Para los módulos hay que acordarse de añadir a la línea de ./configure la opción:
--with-bennu-prefix=DIRECCIÓN_DE_LA_CARPETA_CORE
No sé si eso solucionará el problema de SDL, pero por probar...
Al menos ya tengo cómo seguir intentándolo :)
no creo, es culpa de alguna dependencia de sdlmixer para gp2x, porque extraje el ejemplo de sdlmixer y solo funciona cuando le pones un milló de librerías vorbis, ogg, mad, midmod, etc. y alguna no le llega al configure.
En cuanto al with bennu prefix no debería ser necesario, al menos no lo es ni para linux, windows, caanoo y wiz :D.
Drumpi, porfaplis, me puedes pasar tu script de configuración de variables que usaste para compilar con el firmware de open2x?
Es para confirmarte (o confirmarme) unas cuantas cosas.
Asias de antemano.
Bueno, no es gran cosa (por no decir que es un clon del de splinter para WIZ con los directorios cambiados).
Aun me estoy enterando de cómo va esto de las toolchains, pero poco a poco, que a mi no me han enseñado na de na, voy aprendiendo a base de "trial & error".
EL primero es el que uso para el open2X, el segundo es con las toolchains oficiales... y las librerías que faltaban a base de descarga-compila-instala (make, make install).
NOTA: son los scripts de compilación de la versión r147. Un par de versiones más adelante se cambió a openSSL y ya no pude seguir por problemas de incompatibilidad entre cygwin y estas librerías, de ahí que lo esté intentando ahora en Linux.
¿Pero con los dos generas binarios válidos? Sino dime con cual, asias dantemano.
Sí, con ambos, de hecho son con los que hice mis versiones y sin cambiar nada de una versión a otra.
Bueno, para no apropiarme del hilo de XCelso, sigo con mi versión por aquí.
Ni mucho menos trato de hacerle la competencia, simplemente sigo lo que empecé hace tiempo por mi línea (llena de fallos, errores, incertidumbre...).
Bien, aprovechando la salida de una versión sin la libSSL para las consolas portátiles, he hecho una recompilación de Bennu tal cual, usando esta r222 más actualizada. Quitando un par de cosillas sin importancia, compilan bien.
De momento sólo he hecho pruebas preliminares, vamos, que sólo he probado con el Echo con lo que me ha salido en binario :D :D :D
Por lo que he visto, seguimos teniendo problemas entre el firm oficial y el open2X, así que seguimos necesitando dos versiones ¿o no? cuando acabe las pruebas, lo confirmaré o no.
¿Qué incompatibilidades hay? la versión Open2x va tan bien como la anterior en el firm open2x, no hay cambios, pero aun no he probado cosas nuevas como las modificaciones del modo7. Sin embargo no carga en el firm oficial (al menos, no en el modo compatibilidad), por lo de siempre: no le gusta la versión de la libc. Tengo que meter las librerías conflictivas en una carpeta aparte y probar la variable que mencionó Splinter en el otro hilo, si funciona, guay.
La versión compilada con las toolchains oficiales son otro cantar: funcionan perfectamente en el "firm oficial", pero más lento (como antes), así que tendré que probar a meterle las SDL aceleradas en la SD y rezar para que no haya problemas (y que funcione). Pero en Open2x, aunque la velocidad es la misma, sigue teniendo el problema con los SIZE: los objetos salen con una rotación de 45º y un escalado gigantesco (y una bajada de frames de narices). Encima está el problema de los angles (¿recordais el video donde la flecha del menú principal se iba de viaje a japón?).
A todo esto hay que añadirle un problema extra: los FPS. Parece ser que los cambios del sistema de cálculo de FPS para WIZ no le gustan a la negrita, y funciona como si hubiesen puesto los FPS a cero (eso no importa mucho en el Echo, pues se pasa casi todo el rato al 50% de su velocidad, pero cuando coges un objeto, la animación termina mucho antes que la música, y el menú va disparado).
Así que, mi prioridad será terminar de hacer las pruebas: probar el modo7, y ver si consigo hacer funcionar la versión open2x en el firm oficial, y si no, probar a meterle las SDL aceleradas a ver si hago que el oficial vaya más rápido. Después ya me preocuparé de meter un nuevo OS_ID para que haga lo mismo que con WIZ, salvo el cálculo de los FPS, que usaré el de PC (que creo que es el que iba antes y funcionaba bien)... si averiguo cómo se hace eso ^^U
Drumpi, para probar eso lo único que tienes que hacer es meter esta línea en tus scripts de ejecución de juegos.
LD_PRELOAD=../bgd-runtime/libc.so.6
no se si el PRELOAD va con paths relativos, lo mejor es hacer el path absoluto...
asi:
LD_PRELOAD=$PWD/../bgd-runtime/libc.so.6
intentar las 2 formas a ver que sale.
Bueno, pues no hay forma de hacer que la versión del firm Open2X funcione en el firm oficial, ya no sé qué hacer.
Para empezar, he metido la libc.so de las toolchains del open2x en la misma carpeta que el runtime y se me ha quejado:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
Inconsistency detected by ld.so: dl-minimal.c: 134: realloc: Assertion `ptr == alloc_last_block' failed!
Luego le he metido la ld-linux.so.2, luego la libdl.so:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/libc.so.6: version `GLIBC_PRIVATE' not found (requiredby /mnt/sd/bgd-runtime/libdl.so)
He intentado varias combinaciones, varios archivos, comprobado que no eran enlaces y a lo más que he llegado ha sido a:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)
Lo he intentado por activa y por pasiva. Por si queda alguna duda, este es el script que he usado:
#!/bin/sh
LD_PRELOAD=/mnt/sd/bgd-runtime/ld-linux.so.2:/mnt/sd/bgd-runtime/libdl.so:/mnt/sd/bgd-runtime/libc.so.6
LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=../bgd-runtime:$PATH
export LD_PRELOAD
export LD_LIBRARY_PATH
export PATH
echo 2 > /proc/cpu/alignment
for prg in *.prg; do
name=`basename $prg .prg`
bgdc $prg 1>log1.txt 2>err1.txt
bgdi $name 1>log2.txt 2>err2.txt
done
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
En fin, que ya ando desesperado, así que por hoy lo dejo, que encima estoy bajo de ánimos. No he podido probar el modo7 ni nada de lo nuevo, así que os lo subo a ver si teneis más suerte que yo.
http://drumpi.se32.com/games/BennuGD-r222-GP2XOficial.zip
http://drumpi.se32.com/games/BennuGD-r222-GP2Xopen2x.zip
Aviso, tiene el fallo del cálculo de los FPS, los juegos van a ir a toda pastilla. A ver si saco tiempo y busco dónde se define el OS_ID, creo un nuevo valor (supongo que me toca el 1002) y modifico el código para que tome este valor como si fuera WIZ salvo para el cálculo de los FPS (una pequeña guía de situación me vendría de perlas).
Quote from: Drumpi on January 20, 2011, 07:55:52 PM
Bueno, pues no hay forma de hacer que la versión del firm Open2X funcione en el firm oficial, ya no sé qué hacer.
Para empezar, he metido la libc.so de las toolchains del open2x en la misma carpeta que el runtime y se me ha quejado:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
Inconsistency detected by ld.so: dl-minimal.c: 134: realloc: Assertion `ptr == alloc_last_block' failed!
Luego le he metido la ld-linux.so.2, luego la libdl.so:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/libc.so.6: version `GLIBC_PRIVATE' not found (requiredby /mnt/sd/bgd-runtime/libdl.so)
He intentado varias combinaciones, varios archivos, comprobado que no eran enlaces y a lo más que he llegado ha sido a:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)
Lo he intentado por activa y por pasiva. Por si queda alguna duda, este es el script que he usado:
#!/bin/sh
LD_PRELOAD=/mnt/sd/bgd-runtime/ld-linux.so.2:/mnt/sd/bgd-runtime/libdl.so:/mnt/sd/bgd-runtime/libc.so.6
LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=../bgd-runtime:$PATH
export LD_PRELOAD
export LD_LIBRARY_PATH
export PATH
echo 2 > /proc/cpu/alignment
for prg in *.prg; do
name=`basename $prg .prg`
bgdc $prg 1>log1.txt 2>err1.txt
bgdi $name 1>log2.txt 2>err2.txt
done
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
En fin, que ya ando desesperado, así que por hoy lo dejo, que encima estoy bajo de ánimos. No he podido probar el modo7 ni nada de lo nuevo, así que os lo subo a ver si teneis más suerte que yo.
http://drumpi.se32.com/games/BennuGD-r222-GP2XOficial.zip
http://drumpi.se32.com/games/BennuGD-r222-GP2Xopen2x.zip
Aviso, tiene el fallo del cálculo de los FPS, los juegos van a ir a toda pastilla. A ver si saco tiempo y busco dónde se define el OS_ID, creo un nuevo valor (supongo que me toca el 1002) y modifico el código para que tome este valor como si fuera WIZ salvo para el cálculo de los FPS (una pequeña guía de situación me vendría de perlas).
fantastico! eso quiere decir que el LD_PRELOAD funciona... es obvio que pase eso... se reemplaza la libc.so para todas las aplicaciones... :D
proba con este script
#!/bin/sh
LLP_BAK=$LD_LIBRARY_PATH
P_BAK=$PATH
LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=../bgd-runtime:$PATH
export LD_LIBRARY_PATH
export PATH
export LD_PRELOAD
LD_PRELOAD_BAK=$LD_PRELOAD
echo 2 > /proc/cpu/alignment
for prg in *.prg; do
name=`basename $prg .prg`
# LD_PRELOAD=/mnt/sd/bgd-runtime/ld-linux.so.2:/mnt/sd/bgd-runtime/libdl.so:/mnt/sd/bgd-runtime/libc.so.6
LD_PRELOAD=/mnt/sd/bgd-runtime/libc.so.6
bgdc $prg 1>log1.txt 2>err1.txt
bgdi $name 1>log2.txt 2>err2.txt
LD_PRELOAD=$LD_PRELOAD_BAK
done
LD_LIBRARY_PATH=$LLP_BAK
PATH=$P_BAK
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
si sigue sin funcionar cambia la LD_PRELOAD por la que esta comentada con #
¿Y cual es la diferencia con mi script? Sigue definiéndose la variable antes de compilar/interpretar.
PD: el script que he puesto es el último, las primeras verisones sólo enlazaban con la libc.so.6 y buscaban a ld-linux.so.2 en /lib, pero no era compatible, de ahí que añadiese después la ld-linux.so.2 a la lista de LD_PRELOAD y a la carpeta del runtime. La libdl era una corazonada porque me decía lo de:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
Inconsistency detected by ld.so: dl-minimal.c: 134: realloc: Assertion `ptr == alloc_last_block' failed!
No tengo yo muy claro que esté funcionando, pero sí, algún cambio hay.
te comento, la diferencia radica en que basename es un ejecutable, y si tenes definido PRELOAD tambien lo va a afectar a el... por eso, definiendolo donde lo puse, solo afectara a la ejecucion de bennugd, y cuando deje de ejecutar los ejecutables bennugd, volvera a cargar la libc original.
hace una cosa, estas librerias nuevas que pusiste no las pongas en el mismo directorio que el runtime, sino en una subcarpeta del runtime.
y si sigue sin ir, hace lo mismo que hice yo para el LD_PRELOAD, pero para el LD_LIBRARY_PATH... asi nos aseguramos que los comandos normales, usen las libs correctas, y bennugd las que se necesitan.
parece que no pilla el ld_linux.so del preload porque sigue usando el de /lib/, quizas cambiando el orden en el preload.., a lo mejor es inverso.
que lio se estan haciendo... como lamento no tener una gp2x...
Quote from: DCelso on January 21, 2011, 03:03:48 AM
parece que no pilla el ld_linux.so del preload porque sigue usando el de /lib/, quizas cambiando el orden en el preload.., a lo mejor es inverso.
No, no es eso, ya cambié el orden, por eso está la libc al final, puesta al principio se quejaba de la ld-linux, así que no es el orden (o al menos, los que yo he intentado).
Lo malo es que ahora tengo menos tiempo para probar.
SPLINTER: si por mi fuera, te mandaba una, pero la mía la estoy usando, y no tengo ni para comprarme una F200 para mi, así que... ^^U
gracias, lo que cuenta es la intencion... :)