Undefined reference al compilar MPlayer con soporte para x264 [Solucionado]
Podría poner un título más descriptivo, pero como no sé casi nada de programación, igual la cago traduciendo del inglés al castellano. Vamos, que no sé si usáis "referencia no definida" o eso suena a paleto-arameo.
Tengo por costumbre compilar mplayer/mencoder desde las fuentes. Hoy, en un momento de aburrimiento, me he bajado la última versión con svn y, en el ./configure, me ha dicho que si no dispongo de la versión 84 (o superior) de la librería x264, me quedo sin x264. Por tonto.
El repositorio estable de Marillat tiene la 79, así que no me he complicado la vida, me he ido a la web de VideoLAN y también me he descargado la última versión de x264, que todavía echaba el humillo del pan recién hecho.
Con mi flamante y nuevo archivo x264.h en su sitio, he vuelto a hacer el ./configure:
cc tal y tal ytal ...
/tmp/ccHj4hQh.o: In function `main':
mplayer-conf-10711-32242.c:(.text+0x16): undefined reference to `x264_encoder_open_84'
collect2: ld returned 1 exit status
Result is: no (in libavcodec: no)
Toma. No hay ninguna referencia a x264_encoder_open_84. ¿Cómo que no? Nano x264.h:
/* Force a link error in the case of linking against an incompatible API version.
* Glue #defines exist to force correct macro expansion; the final output of the macro
* is x264_encoder_open_##X264_BUILD (for purposes of dlopen). */
#define x264_encoder_glue1(x,y) x##y
#define x264_encoder_glue2(x,y) x264_encoder_glue1(x,y)
#define x264_encoder_open x264_encoder_glue2(x264_encoder_open_,X264_BUILD)Aquí es donde se supone que se "crea" esa referencia. Me ha hecho gracia lo de "glue" (cola de pegar), pero el caso es que la función debería... funcionar. ¡Ah! Vamos más arriba a ver ese X264_BUILD:
#define X264_BUILD 84Vamos, que debería "crearse" una referencia x264_encoder_open_84. ¿Y por qué no la encuentra el script CONFIGURE del MPlayer?
Tiene que haber algún error de sintaxis o chorrada similar, porque he revisado código de versiones anteriores y el mecanismo es más o menos similar, incorporando el script perfectamente la libreria x264 a la lista de "admitidas". Pero claro, para poder verlo, tendría que saber C/C++, cosa que no ocurre. ¿Podría ser alguna #almohadilla# de más?
- Inicie sesión o regístrese para enviar comentarios
- 413 lecturas


Al final, di con el fallo. Había "actualizado" x264.h en /lib/include, pero en /usr/lib/include había dejado la "vieja" libx264.a. Así que el script configure se estaba haciendo la picha un lío, con la diferencia de versiones entre ambas.