2012-02-29 24 views
8

Aparece este error cuando intento compilar ffmpeg en una máquina CentOS de 64 bits.ffmpeg install en CentOS 64-bit 'install with -fPIC' error

Éstos son mis opciones de ./configure:

./configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-swscale --enable-pthreads --enable-libx264 --enable-libxvid --enable-libvorbis --enable-libfaac --enable-libmp3lame --enable-libvpx

make

me sale el siguiente error al compilar la fuente:

/usr/bin/ld: /usr/local/lib/libvpx.a(vpx_codec.c.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libvpx.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
make: *** [libavcodec/libavcodec.so.54] Error 1 

¿Cómo consigo alrededor de este error , y obtener libvpx en funcionamiento con el último ffmpeg en mi caja de CentOS de 64 bits?

+0

http://stackoverflow.com/questions/27226157/how-to-setup-ffmpeg-for-centos-release-6-5-server – Hitesh

+0

A veces lo que es sucede cuando está ejecutando -fPIC, arrojará este error nuevamente para algún archivo de objeto secundario. Simplemente haga una copia de seguridad de ese archivo objeto y ejecute make nuevamente. Ejemplo. se está ejecutando para TotalSum.cpp y tiene referencia a otro archivo CalculateSum.o. Ahora, el error viene en CalculateSum.o. Por lo tanto, tome una copia de seguridad de CalculateSum.o también y ejecute -fPIC. el error desaparecerá – bgth

Respuesta

0

(Y la pregunta es ...?)

bibliotecas compartidas deben estar compuestas de código objeto PIC, pero ffmpeg no lo hicieron.

+0

lo siento, pensé que la pregunta estaba implícita. ¿Cómo puedo evitar este error y poner en funcionamiento libvpx con el último ffmpeg en mi máquina de 64 bits? – ndmweb

+0

http://stackoverflow.com/questions/27226157/how-to-setup-ffmpeg-for-centos-release-6-5-server – Hitesh

2

Trate

CFLAGS=-fPIC ./configure ...<your config options>... 

Para añadir la bandera que menciona el error no se encuentra.

+0

Esto funcionó para mí. La clave era usar esta bandera cuando se construye/instala x264/libx264 también. –

0

¿Compiló su libvpx con --shared y -fPIC por lo que generó libvpx.so*?

Si no, puede intentar el comentario # 6 y # 7 en this problema.

+0

Por favor, ayúdenme !!!! ... http://stackoverflow.com/questions/27226157/how-to-setup-ffmpeg-for-centos-release-6-5-server – Hitesh

10

Desde que configuró FFMPEG con "--enable-shared", también necesita configurar algunas de sus otras bibliotecas con "--enable-shared", y todas deben usar la misma configuración.

Este mensaje de error básicamente le dice que vuelva a compilar libvpx con "--enable-shared" agregado al comando configure, luego intente compilar FFMPEG nuevamente (también configurado con "--enable-shared"). Lo más probable es que obtenga el mismo error, pero dirá "libx264" o "libmp3lame" en lugar de "libvpx", por lo que también tendrá que volver a compilar esas bibliotecas con "--enable-shared" en el comando configure.

+0

http://stackoverflow.com/questions/27226157/how-to -setup-ffmpeg-for-centos-release-6-5-server – Hitesh

2

Recibí un error similar al compilar ffmpeg en una máquina x86_64 con Oracle Linux 6.3. Oracle Linux se basa en Red Hat y, por lo tanto, es similar a CentOS en la pregunta original.

configure:

./configure --enable-shared --enable-nonfree --enable-libmp3lame --enable-libfaac --enable-libx264 --enable-encoder=x264 --enable-gpl 

marca:

/usr/bin/ld: /usr/local/lib/libx264.a(common.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libx264.a: could not read symbols: Bad value 

En mi caso, esto answer, aunque en parte específica de Ubuntu, arrojar más luz sobre la cuestión de fondo con respecto a los sistemas x86_64 en general:

"Creo que si habilita-comparte en FFmpeg tiene que hacer lo mismo en x264 en sistemas x86_64, de lo contrario tendrá un FFmpeg compartido de PIC y no estático PIC x264."

La solución era asegurar las fuentes x264 que originalmente I recopilados usando el 'enable-estático', marca con configure (que genera '/usr/local/lib/libx264.a') era re-compilado usando la bandera "--enable-shared" que genera el destino correcto de "/usr/local/lib/libx264.so":

1st Attempt: 
    1. cd /tmp 
    2. wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 
    3. tar xfv last_x264.tar.bz2; 
    4. cd x264-snapshot-xxxxxx 
    5. ./configure --enable-static 
    6. make && make install 

2nd Attempt: 
    1. cd /tmp/x264-snapshot-xxxxxx 
    2. make distclean 
    3. ./configure --enable-shared 
    4. make && make install 
0

tuve este problema en MythTV construir con libx264.a

He descargado y construido como sugirió Saheed.

Lo único es que /usr/local/lib/libx264.a no se modificó cuando hice "make install". Tenía que hacer "make install-lib-static"