2011-12-03 15 views
7

Sto cercando di compilare OpenCV versione 2.3.1 su Ubuntu 11.10 seguendo le istruzioni descritte here. Sto ottenendo l'errore seguente. Non riesco a capire cosa sta succedendo ... /usr/local/lib/libavcodec.a esiste ma linker non può collegarsi ad esso, o qualcos'altro?Errore strano del linker durante la compilazione di OpenCV2.3.1 su Ubuntu 11.10

errore:

[ 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

hai provato la compilazione con -fPIC come suggerisce l'errore? – RCE

+0

Compila cosa? OpenCV stesso? –

+0

@RCE Come aggiungo il flag -fPIC al compilatore/linker? Dovrei modificare MakeFile? –

risposta

6

Il problema è che si sta tentando di creare un collegamento con libopencv_highgui.solibavcodec.a. Quest'ultimo è creato dal codice compilato senza -fPIC (che è abbastanza comune) e tale codice non può essere collegato in librerie condivise su x86_64.

Le scelte sono:

  • Ottenere libavcodec.so e organizzare per collegare contro di esso, o
  • Rimuovere libavcodec o -lavcodec dalla linea di collegamento completamente.

Per il primo, molto probabilmente è sufficiente installare il pacchetto libavcodec-dev.

Se si esegue la seconda operazione, sarà comunque necessario disporre i simboli richiesti da libavcodec per la disponibilità da libopencv_highgui.so in fase di esecuzione. È possibile ottenere ciò collegando l'eseguibile principale con libavcodec (archivio o variante condivisa).

+0

Aggiungo l'opzione --enable-pic a x264 e ffmpeg. Ho lo stesso errore Quindi rimosso libhighgui e libcv (installato dai repository di ubuntu) e anche installato libavc-1394-22-dev. Compilato OpenCV di nuovo e sta funzionando bene! Grazie –

+0

Come hai rimosso libhighgui e libcv? Puoi anche inviare un link a libavc-1394-22-dev – oneiros

4

mio prendere è che, prima sudo apt-get remove libavcodec, quindi reinstallare con sudo apt-get install libopencv-dev

una volta ho avuto problema simile, e il sopra risolto esso

2

esegue una versione a 64 bit di Ubuntu è necessario configurare e costruire ffmpeg con ./configure --enable-shared --enable-pic come è descritto al punto 7b e 8b

Problemi correlati