Ver la versión completa : Problema al enlazar
Puck2099
18/12/2005, 18:03
Esto ya lo he posteado en el hilo de programar bajo Linux, pero lo pongo por aquí también para no sobrecargar ese hilo y atraer la atención de quienes no se pasen por allí ;)
He usado el gcc 3.4.4 que subió D_Skywalk al ftp, pero al configurar el Makefile del Exult me metía referencias al directorio /home/brendan/tmp/open2x_test/usr/ (que no existe en mi máquina), así que las cambié por los directorios donde instalé el gcc y libsdl, pero a la hora de compilarlo, todavía encuentra una referencia que no aparece en el Makefile (ni ningún otro fichero) por ningún lado.
Es a la hora de enlazar los objetos cuando me salta esto:
/bin/sh ./libtool --mode=link arm-gp2x-linux-g++ -O2 -Wno-long-long -fsigned-char -DDISABLE_X11 -DQWS -D__zaurus__ -DUSE_FMOPL_MIDI -L/opt/gp2x-arm-linux/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/lib -L/opt/local/gp2x/lib -o exult actions.o actorio.o actors.o alloc.o args.o bggame.o browser.o cheat.o cheat_screen.o combat.o delobjs.o devgame.o dir.o drag.o effects.o exult.o exultmenu.o game.o gameclk.o gamedat.o gamemap.o gamerend.o gamewin.o keys.o keyactions.o menulist.o monsters.o mouse.o npcnear.o npctime.o palette.o party.o paths.o readnpcs.o schedule.o segfile.o shapeid.o sigame.o tqueue.o txtscroll.o version.o xdrag.o pathfinder/libpathfinder.la audio/libaudio.la audio/midi_drivers/libmididrv.la flic/libflic.la conf/libconf.la imagewin/libimagewin.la server/libserver.la usecode/libusecode.la shapes/libshapes.la objs/libobjs.la gumps/libgumps.la files/libu7file.la files/zip/libminizip.la -L/opt/local/gp2x/lib -Wl,-rpath,/opt/local/gp2x/lib -lSDL -lpthread -lSDL_mixer
libtool: link: warning: library `/opt/local/gp2x/lib/libSDL.la' was moved.
libtool: link: warning: library `/opt/local/gp2x/lib/libSDL_mixer.la' was moved.libtool: link: warning: library `/opt/local/gp2x/lib/libSDL.la' was moved.
libtool: link: warning: library `/opt/local/gp2x/lib/libSDL_mixer.la' was moved.libtool: link: cannot find the library `/home/brendan/tmp/open2x_test/usr//lib/libvorbisidec.la'
make[2]: *** [exult] Error 1
¿Tenéis alguna idea de qué puede ocurrir?
Las librerías .la sí que están en esa ruta, no sé porque dice que fueron movidas, pero lo que realmente rompe la compilación es la línea de más abajo con lo del brendan...
Gracias por la ayuda :brindis:
oCHARLIEo
18/12/2005, 20:02
Puck, mira en el directorio donde tengas instalado las SDLs en el bin hay un fichero que se llama sdl-config
Editalo, y hay tienes esa ruta fantasma. solo tienes que modificarla por la correcta. El makefile ejecuta este comando para saber donde tienes las SDL, y este se lo especifica mal...
Puck2099
18/12/2005, 20:41
Puck, mira en el directorio donde tengas instalado las SDLs en el bin hay un fichero que se llama sdl-config
Editalo, y hay tienes esa ruta fantasma. solo tienes que modificarla por la correcta. El makefile ejecuta este comando para saber donde tienes las SDL, y este se lo especifica mal...
Tienes razón, ahí se especificaba este directorio, pero cambiándolo sigue igual :(
He estado mirando con un grep y resulta que dentro de todas o casi todas las libs .la hay referencias también a ese directorio del tipo:
lib/libSDL_mixer.la:dependency_libs=' -L/home/brendan/tmp/open2x_test/usr/lib /home/brendan/tmp/open2x_test/usr//lib/libvorbisidec.la /home/brendan/tmp/open2x_test/usr/lib/libSDL.la /home/brendan/tmp/open2x_test/arm-linux-gnu/lib/libstdc++.la -L/home/brendan/gp2x/build/open2x/gcc-build/arm-linux-gnu/libstdc++-v3/src -L/home/brendan/gp2x/build/open2x/gcc-build/arm-linux-gnu/libstdc++-v3/src/.libs -L/home/brendan/gp2x/build/open2x/gcc-build/gcc -L/home/brendan/tmp/open2x_test/arm-linux-gnu/bin -L/home/brendan/tmp/open2x_test/arm-linux-gnu/lib -L/home/brendan/tmp/open2x_test/lib/gcc/arm-linux-gnu/4.0.2 -L/home/brendan/tmp/open2x_test/lib/gcc/arm-linux-gnu/4.0.2/../../../../arm-linux-gnu/lib -lc -lgcc_s -lm -lpthread -L/home/brendan/tmp/open2x_test/usr//lib /home/brendan/tmp/open2x_test/usr//lib/libmikmod.la -ldl'
lib/libSDL_mixer.la:libdir='/home/brendan/tmp/open2x_test/usr//lib'
¿Crees que podría editar "a pelo" estos archivos y cambiar dichas referencias?
Saludos
¿Crees que podría editar "a pelo" estos archivos y cambiar dichas referencias?
Esos ficheros no son mas que ficheros de texto normales y corrientes, por lo que puedes editarlos y cambiar esos paths sin problemas. De hecho hay que hacer eso mismo si instalas el sdk de gph que hay en el ftp (para más información véase el wiki (http://wiki.gp2x.org/wiki/GPH_SDK)).
Hasta luego.
oCHARLIEo
19/12/2005, 16:03
Si, yo lo probe anoche y funciona correcto. perooooo me encontre con otro problema...
las ultimas SDLs que tenemos (las de theoddbot) tienen unas dependiencias de fliparlo :eek: :eek:
dependency_libs=' /home/brendan/tmp/open2x_test/arm-linux-gnu/lib/libstdc++.la -L/home/brendan/gp2x/build/open2x/gcc-build/arm-linux-gnu/libstdc++-v3/src -L/home/brendan/gp2x/build/open2x/gcc-build/arm-linux-gnu/libstdc++-v3/src/.libs -L/home/brendan/gp2x/build/open2x/gcc-build/gcc -L/home/brendan/tmp/open2x_test/arm-linux-gnu/bin -L/home/brendan/tmp/open2x_test/arm-linux-gnu/lib -L/home/brendan/tmp/open2x_test/lib/gcc/arm-linux-gnu/4.0.2 -L/home/brendan/tmp/open2x_test/lib/gcc/arm-linux-gnu/4.0.2/../../../../arm-linux-gnu/lib -lc -lgcc_s -lm -ldl -lpthread'
al loro sobre todo a la dependencia libstdc++, he probado a eliminarla del fichero, pero obviamente al ejecutarlo en la GP2X me lanza un hermoso mensaje de que falta la libreria....
Me llama la atencion sobre todo que en las demas libs que tengo las dependencias de las libSDL son mucho mas escuetas...
dependency_libs=' -lpthread -lm -ldl'
como lo veis?
Puck2099
19/12/2005, 16:07
Bueno, pues habrá que editar ya apuntar a dichas libs a ver si así compila del todo :)
A ver si cuando llegue a casa lo cojo con fuerza, porque anoche estaba destrozado y lo dejé porque nisiquiera encontraba la libstdc++ donde tengo descomprimidos los archivos...
Saludos
oCHARLIEo
19/12/2005, 17:04
Ya compila Puck ^_^
Tienes que editar el libSDL.la y el libSDLmixer.la
y cambiar las dependency_libs= para que se ajusten a las ubicaciones de los ficheros. el stdc++ esta en <donde_tengas_el_arm_gcc>/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/arm-gp2x-linux/lib/libstdc++.la
Voy a probarlo en la GP2X a ver si tira...
Puck2099
19/12/2005, 17:07
Ya compila Puck ^_^
Tienes que editar el libSDL.la y el libSDLmixer.la
y cambiar las dependency_libs= para que se ajusten a las ubicaciones de los ficheros. el stdc++ esta en <donde_tengas_el_arm_gcc>/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/arm-gp2x-linux/lib/libstdc++.la
Voy a probarlo en la GP2X a ver si tira...
Guay :)
De todos modos, habrá que meterle las librerías dinámicas a la GP2X, ¿o lo enlazaste finalmente estáticamente?
Saludos
oCHARLIEo
19/12/2005, 18:08
Estatico. tiene que poner en el configure otro parametro: -enable-static=yes
Puck2099
19/12/2005, 18:30
Estatico. tiene que poner en el configure otro parametro: -enable-static=yes
Guay, ¿lo has probado ya en la consola?, ¿funciona? :)
Saludos
oCHARLIEo
19/12/2005, 20:05
Pues tp puedo probar mucho, por que estoy en el trabajo, y ademas no tengo el ultima por aki... pero he ejecutado un ./exult --help y me da un error de que las glibc tienen que ser version 2.3 o superior...
Me resulta raro por que el binario que tengo es estatico (ocupa 5,8 megas, y antes venia a ocupar 1,3 o asi)... pero nose, habra que darle un par de vueltas mas... :-(
ya que estais liados compilando el exult aprovecho a haceros una pregunta.
Quiero intentar portar el abuse-sdl a la gp2x pero nunca he tenido ningun proyecto tan "grande" que compilar y veo que primero hay que ejectuar el ./configure para que te cree los makefiles.
Ejecutais primero el configure para crear los makefiles y luego editar estos ultimos con los paths correctos o cambiais directamente el archivo configure para que cree los makefiles correspondientes a la gp2x? Porque he estado echandole un vistazo al configure y no me aclaro demasiado, supongo que sera lo segundo asi que mañana me pondre en serio con ello.
Si tengo algun problema os preguntare ;)
Puck2099
20/12/2005, 15:07
ya que estais liados compilando el exult aprovecho a haceros una pregunta.
Quiero intentar portar el abuse-sdl a la gp2x pero nunca he tenido ningun proyecto tan "grande" que compilar y veo que primero hay que ejectuar el ./configure para que te cree los makefiles.
Ejecutais primero el configure para crear los makefiles y luego editar estos ultimos con los paths correctos o cambiais directamente el archivo configure para que cree los makefiles correspondientes a la gp2x? Porque he estado echandole un vistazo al configure y no me aclaro demasiado, supongo que sera lo segundo asi que mañana me pondre en serio con ello.
Si tengo algun problema os preguntare ;)
Al propio configure le pasas los parámetros que necesites (compilador, flags, rutas, includes, etc.) y él ya se encarga de crear los Makefiles con todo ello.
En el Exult se podría editar los Makefiles a mano, pero me parece que son 17 o así los que hay y es mucho más sencillo ejecutar el "configure" y que te lo haga él solo :)
Saludos
Al propio configure le pasas los parámetros que necesites (compilador, flags, rutas, includes, etc.) y él ya se encarga de crear los Makefiles con todo ello.
En el Exult se podría editar los Makefiles a mano, pero me parece que son 17 o así los que hay y es mucho más sencillo ejecutar el "configure" y que te lo haga él solo :)
Saludos
OK, en cuanto llegue a casa probaré a ver que tal me va
Un saludo
oCHARLIEo
20/12/2005, 18:10
Ozius, a mi con este script me compila. Lo he probado en la GP2X desde linea de comandos con un --help y funciona bien, pero no tengo aki los ficheros del abuse para probarlo...
#!/bin/bash
CROSS_COMPILE=/home/charlie/GP2X/dev_open2x/open2x_gcc/gcc-4.0.2-glibc-2.3.5/arm-open2x-linux/arm-open2x-linux/bin
SDL_BASE=/home/charlie/GP2X/dev_open2x/libs_gp2x
export PATH="$CROSS_COMPILE:$PATH"
LDFLAGS="-static"
CFLAGS="-msoft-float"
CXXFLAGS="-msoft-float -static"
sh ./configure --prefix="/home/charlie/GP2X/dev_open2x/games_sdl/abuse_sdl-0.7.0/install_dir" --build=i386 --host=arm-open2x-linux --target=arm-open2x-linux --disable-opengl --with-sdl-prefix="/home/charlie/GP2X/dev_open2x/devkitGP2X_2" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" || exit
make || exit
make install || exit
Ya no se si toque algun fichero mas, por que lo probe hace tiempo y no me acuerdo... si necesitas todo el directorio te lo comprimo y te lo mando.
Puck2099
20/12/2005, 18:12
Pues tp puedo probar mucho, por que estoy en el trabajo, y ademas no tengo el ultima por aki... pero he ejecutado un ./exult --help y me da un error de que las glibc tienen que ser version 2.3 o superior...
Me resulta raro por que el binario que tengo es estatico (ocupa 5,8 megas, y antes venia a ocupar 1,3 o asi)... pero nose, habra que darle un par de vueltas mas... :-(
Por cierto, se me olvidaba, a mi tampoco me llegó a compilar ayer, pasé el problema con las .la y luego me saltó un "undefined reference" a la función main :loco: en el crt0.o
A ver si cuando llegue a casa te copio el mensaje por si sabes qué leches le pasa :(
Ozius, a mi con este script me compila. Lo he probado en la GP2X desde linea de comandos con un --help y funciona bien, pero no tengo aki los ficheros del abuse para probarlo...
Gracias Charlie, lo probaré y te comento que tal :)
ya lo he probado y ha compilado bien, solo cambiando los paths a los mios y el archivo sdl-config ha ido bien. el --help me funciona tambien en la gp2x, luego miro con los datafiles del juego. Gracias por la ayuda
:brindis:
oCHARLIEo
20/12/2005, 20:21
Estupendo Ozius, ya nos contaras que tal ^_^
Puck, hazme un cuak cuando quieras. yo al final tuve que quitar las dependencias del SDLsysvm.h (es comentar tres lineas), por que no pasaba de hay. ¿Es posible que te este pillando el X11.h de otro sitio?
Puck2099
20/12/2005, 20:35
Puck, hazme un cuak cuando quieras. yo al final tuve que quitar las dependencias del SDLsysvm.h (es comentar tres lineas), por que no pasaba de hay. ¿Es posible que te este pillando el X11.h de otro sitio?
No creo que lo esté pillando de otro lado, me parece que con los flags que te pasé obviaba el soporte para las X, pero ya no estoy seguro, esta noche me paso por el Irc y, si estás, lo vemos :)
Por cierto, te pego el error que me da en la compilación. Verás referencias a las rutas que había que cambiar, pero fui cambiando una por una hasta que compiló sin darme problemas de librerías, supongo que esas no se usarán...
make[2]: Entering directory `/home/puck/gp2x/exult-1.2'
/bin/sh ./libtool --mode=link arm-gp2x-linux-g++ -O2 -Wno-long-long -fsigned-char -DDISABLE_X11 -DQWS -D__zaurus__ -DUSE_FMOPL_MIDI -L/opt/gp2x-arm-linux/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/lib -L/opt/local/gp2x/lib -o exult actions.o actorio.o actors.o alloc.o args.o bggame.o browser.o cheat.o cheat_screen.o combat.o delobjs.o devgame.o dir.o drag.o effects.o exult.o exultmenu.o game.o gameclk.o gamedat.o gamemap.o gamerend.o gamewin.o keys.o keyactions.o menulist.o monsters.o mouse.o npcnear.o npctime.o palette.o party.o paths.o readnpcs.o schedule.o segfile.o shapeid.o sigame.o tqueue.o txtscroll.o version.o xdrag.o pathfinder/libpathfinder.la audio/libaudio.la audio/midi_drivers/libmididrv.la flic/libflic.la conf/libconf.la imagewin/libimagewin.la server/libserver.la usecode/libusecode.la shapes/libshapes.la objs/libobjs.la gumps/libgumps.la files/libu7file.la files/zip/libminizip.la -L/opt/local/gp2x/lib -Wl,-rpath,/opt/local/gp2x/lib -lSDL -lpthread -lSDL_mixer -lz
libtool: link: warning: library `/opt/local/gp2x/lib/libmikmod.la' was moved.
arm-gp2x-linux-g++ -O2 -Wno-long-long -fsigned-char -DDISABLE_X11 -DQWS -D__zaurus__ -DUSE_FMOPL_MIDI -o exult actions.o actorio.o actors.o alloc.o args.o bggame.o browser.o cheat.o cheat_screen.o combat.o delobjs.o devgame.o dir.o drag.o effects.o exult.o exultmenu.o game.o gameclk.o gamedat.o gamemap.o gamerend.o gamewin.o keys.o keyactions.o menulist.o monsters.o mouse.o npcnear.o npctime.o palette.o party.o paths.o readnpcs.o schedule.o segfile.o shapeid.o sigame.o tqueue.o txtscroll.o version.o xdrag.o -Wl,-rpath -Wl,/opt/local/gp2x/lib -L/opt/gp2x-arm-linux/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/lib -L/opt/local/gp2x/lib pathfinder/.libs/libpathfinder.a audio/.libs/libaudio.a audio/midi_drivers/.libs/libmididrv.a flic/.libs/libflic.a conf/.libs/libconf.a imagewin/.libs/libimagewin.a server/.libs/libserver.a usecode/.libs/libusecode.a shapes/.libs/libshapes.a objs/.libs/libobjs.a gumps/.libs/libgumps.a files/.libs/libu7file.a files/zip/.libs/libminizip.a -L/home/brendan/gp2x/build/open2x/gcc-build/arm-linux-gnu/libstdc++-v3/src -L/home/brendan/gp2x/build/open2x/gcc-build/arm-linux-gnu/libstdc++-v3/src/.libs -L/home/brendan/gp2x/build/open2x/gcc-build/gcc -L/home/brendan/tmp/open2x_test/arm-linux-gnu/bin -L/home/brendan/tmp/open2x_test/arm-linux-gnu/lib -L/home/brendan/tmp/open2x_test/lib/gcc/arm-linux-gnu/4.0.2 -L/home/brendan/tmp/open2x_test/lib/gcc/arm-linux-gnu/4.0.2/../../../../arm-linux-gnu/lib /opt/local/gp2x/lib/libSDL_mixer.so -L/home/brendan/tmp/open2x_test/usr/lib /opt/local/gp2x/lib/libvorbisidec.so /opt/local/gp2x/lib/libSDL.so /opt/gp2x-arm-linux/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/arm-gp2x-linux/lib/libstdc++.so -lc -lgcc_s -lm -lpthread -L/home/brendan/tmp/open2x_test/usr//lib /opt/local/gp2x/lib/libmikmod.so -ldl -lz -Wl,--rpath -Wl,/opt/local/gp2x/lib -Wl,--rpath -Wl,/opt/gp2x-arm-linux/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/arm-gp2x-linux/lib -Wl,--rpath -Wl,/opt/local/gp2x/lib -Wl,--rpath -Wl,/opt/gp2x-arm-linux/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/arm-gp2x-linux/lib
/opt/gp2x-arm-linux/gcc-3.4.4-glibc-2.3.5/arm-gp2x-linux/lib/gcc/arm-gp2x-linux/3.4.4/../../../../arm-gp2x-linux/lib/crt1.o: In function `_start':
init.c:(.text+0x30): undefined reference to `main'
collect2: ld returned 1 exit status
make[2]: *** [exult] Error 1
make[2]: Leaving directory `/home/puck/gp2x/exult-1.2'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/puck/gp2x/exult-1.2'
make: *** [all] Error 2
Saludos
Yo tambien tengo un problema con el linkado a la hora de compilar battle for wesnoth, ahora no lo tengo a mano el error. Pero en principio, no me dejaba compilar por culpa de las SDL_net. (Cuando pueda lo posteare)
Y no se si el configure esta tonto o que, pero la opcion --host=arm-gp2x-linux no deberia obligar a make a que arm-gp2x-linux-gcc sea el compilador en caso de encontrarlo? :loco:
Puck2099
21/12/2005, 20:59
Charlie, ya tengo compilado esto y me sale la pantalla del help :)
¡Qué emoción estoy sintiendo, ahora a ver si funciona algo más! :saltando:
Juas, ¡biba hamigo! [wei4]
Pues informa, que ya tengo ganas de probar ese Exult. :)
oCHARLIEo
21/12/2005, 21:24
Charlie, ya tengo compilado esto y me sale la pantalla del help :)
¡Qué emoción estoy sintiendo, ahora a ver si funciona algo más! :saltando:
Juas, ¡biba hamigo! [wei4]
GENIAL HAMIGO!! [wei4]
como lo has hecho, tio? al final era el tema de la compilacion estatica?
Puck2099
21/12/2005, 21:35
GENIAL HAMIGO!! [wei4]
como lo has hecho, tio? al final era el tema de la compilacion estatica?
Sí, era cosa de la compilación estática, he cogido todos los objetos y los he compilado "a pelo", resultando un ejecutable de 18 megas que con el strip se ha quedado en 4 :)
Ahora estoy viendo que archivos tengo que copiar y como configurar el juego, a ver si esta tarde os puedo contar algo más :)
Saludos
Que grande eresss! :saltando:
Asi que compilado a pelo, eh? Pues se tendra que hacer asi siempre.
Sigue a si puck!!! [wei4] Queremos mas ports!! :babea: xDDDDD
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.