2011-12-03 31 views
7

Estoy intentando compilar OpenCV versión 2.3.1 en Ubuntu 11.10 siguiendo las instrucciones descritas here. Recibo un error de seguimiento. No se puede entender lo que está sucediendo ... ¿Existe /usr/local/lib/libavcodec.a pero el enlazador no puede vincularlo, o algo más?Extraño error del enlazador al compilar OpenCV2.3.1 en Ubuntu 11.10

error:

[ 20%] Built target pch_Generate_opencv_highgui 
Linking CXX shared library ../../lib/libopencv_highgui.so 
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet' 
can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libavcodec.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
+0

¿Ha tratado de compilar con -fPIC como sugiere el error? – RCE

+0

¿Compilar qué? OpenCV en sí? –

+0

@RCE ¿Cómo agrego el indicador -fPIC al compilador/enlazador? ¿Debo editar MakeFile? –

Respuesta

6

El problema es que usted está tratando de enlazar con libopencv_highgui.solibavcodec.a. Este último está creado a partir de código compilado sin -fPIC (que es bastante habitual), y dicho código no puede vincularse a bibliotecas compartidas en x86_64.

Las opciones son:

  • Obtener libavcodec.so y hacer arreglos para enlazar con él, o
  • Retire libavcodec o -lavcodec desde la línea de enlace completo.

Para el primero, lo más probable es que solo necesite instalar el paquete libavcodec-dev.

Si hace el segundo, igual tendrá que organizar los símbolos que libopencv_highgui.so necesita del libavcodec para estar disponibles en tiempo de ejecución. Puede lograr eso al vincular el ejecutable principal con libavcodec (archivo o variante compartida).

+0

Agrego la opción --enable-pic a ambos x264 y ffmpeg. Tengo el mismo error. Luego eliminó libhighgui y libcv (instalado desde los repositorios de ubuntu) y también instaló libavc-1394-22-dev. Compiló OpenCV nuevamente y está funcionando bien! Gracias –

+0

¿Cómo eliminaste libhighgui y libcv? También puede enviar un enlace a libavc-1394-22-dev – oneiros

4

mi posición sería que, en primer sudo apt run-get remove libavcodec, a continuación, volver a instalar con sudo apt-get install libopencv-dev

Una vez tuve problema similar, y lo anterior resolví

2

ejecutando una versión de 64 bits de Ubuntu tiene que configurar y construir ffmpeg con ./configure --enable-shared --enable-pic como se describe en el paso 7b y 8b

Cuestiones relacionadas