lunes, 16 de marzo de 2009

ffmpeg-17998

Los chicos de Cygwin han sacado la versión 4.3.2-2 de gcc. Vamos a probarla con el ffmpeg de hoy.

Aprovechando que gcc 4.3.x permite optimizar para Core2, uso esta configuración:

./configure --cc=gcc-4 --enable-shared --disable-static --cpu=core2 --enable-gpl --enable-avfilter --enable-avfilter-lavf --enable-pthreads --enable-avisynth --enable-bzlib --enable-zlib --build-suffix=-SVN

Decimos make y, vaya, hombre, salen errores:

libavformat/rtsp.o: In function `__ntohl':
/usr/include/asm/byteorder.h:40: multiple definition of `___ntohl'
libavformat/os_support.o:/usr/include/asm/byteorder.h:40: first defined here


¿De dónde viene esto? Pues hay tres motivos encadenados:

  1. FFmpeg le pasa -std=c99 al compilador
  2. La versión 4.3.x de gcc cambia la semántica del comando inline en modo C99
  3. Los "includes" de las funciones C de Cygwin no cumplen la norma C99.


¿Qué soluciones hay?

  1. La fácil, quitamos el trozo que casca, o sea añadimos --disable-network a nuestra configuración.
  2. La complicada, avisar en la lista de correo de Cygwin que habría que soportar C99 en los "includes".


Es lunes, así que vamos a usar la opción 1.

Ahora funciona la cosa, pero otra tarea pendiente es enviar un parche a ffmpeg-devel para no tener que hacer esta chapucilla con las compilaciones que crean bibliotecas compartidas.

No hay comentarios:

Publicar un comentario