PDA

Ver la versión completa : Problema en el linkado con libmikmod



Puck2099
05/01/2006, 07:44
Hola,

A la hora de linkar me he encontrado con el siguiente problema:

/opt/local/gp2x/lib/libmikmod.a(drv_aiff.o): In function `AIFF_ConvertToIeeeExtended':
drv_aiff.c:(.text+0x1a4): undefined reference to `floor'
drv_aiff.c:(.text+0x238): undefined reference to `floor'
collect2: ld returned 1 exit status


El caso es que en el Makefile llamo a las siguientes libs que en otros proyectos funcionan bien:


-ldl -lSDL -lpthread -lpng -lz -lm -lSDL_mixer -lvorbisidec -lmikmod -lSDL -lpthread

¿Alguna idea de dónde puede venir este fallo?

Muchas gracias

Wild[Kyo]
05/01/2006, 07:50
Pues a mi, de conocimientos limitados, se me ocurre que pueda ser a causa de alguna "incompatibilidad" de pillar una libreria antes que otra.


-lSDL --start-group -lSDL_gfx -lSDL_ttf -lfreetype -lSDL --end-group -lSDL_image -ljpeg -lpng12 -lz --start-group -lSDL_mixer -lvorbisidec -lmikmod -lSDL --end-group -lgcc -lm -lc -lexpat -lpthread -ldl

Yo lo tengo asi a lo bestia para probar, si quieres pruebalo tan solo para ver si compila y entonces sera que es lo que te digo, que tendrias que tocar el orden de las librerias...

Que quizas estoy diciendo una tonteria.... :loco:

miq01
05/01/2006, 08:20
El caso es que en el Makefile llamo a las siguientes libs que en otros proyectos funcionan bien:


-ldl -lSDL -lpthread -lpng -lz -lm -lSDL_mixer -lvorbisidec -lmikmod -lSDL -lpthread

¿Alguna idea de dónde puede venir este fallo?
¿Tiene que ver con tu nuevo regalito? :babea:

Voy muy a ciegas con el tema, y dudo que sea eso, ¿pero por qué tienes duplicado lo de "-lSDL -lpthread"? Aunque como dice Wild[Kyo] tiene toda la pinta de estar relacionado con el orden de las librerías. Lo único que puedo aportar es mi línea LIBS. Ahí va (supongo que no hace falta decir que lo de -L"C:/devkitGP2X/lib" es para especificar dónde se encuentran las librerías):

LIBS = -L"C:/devkitGP2X/lib" -lSDLmain -lSDL_image -lpng12 -ljpeg -lz -lc -lm -lgcc -lSDL_mixer -lvorbisidec -lmikmod -lSDL -lpthread
Teniendo en cuenta que no te encuentra "floor", que está, si no me equivoco, en math.h, ¿no podría ser porque no añades -lgcc?

oCHARLIEo
05/01/2006, 14:15
A ver, que viene el Charlie al rescate!! :D

Puckito, eso pasa con estas librerias nuevas si compilas ese modulo con gcc, usa g++ y te funcionara perfecto. Si lo estas haciendo via configure yo le paso el parametro CC="arm-open2x-linux-g++"

Un saludo

PD: Ya contaras en que andas liado ;-P

Puck2099
05/01/2006, 14:58
A ver, que viene el Charlie al rescate!! :D

Puckito, eso pasa con estas librerias nuevas si compilas ese modulo con gcc, usa g++ y te funcionara perfecto. Si lo estas haciendo via configure yo le paso el parametro CC="arm-open2x-linux-g++"

Un saludo

PD: Ya contaras en que andas liado ;-P

Sí, tío, al final lo arreglé anoche como tú dices, harto de probar cosas, a eso de las 2 y 20 de la madrugada, cambié el gcc por g++ como usaba en el Exult y voalá :)

Muchas gracias a todos