2014-08-28 3 views
7

Ich stelle eine kleine OpenCV-Installation auf Ubuntu 13.10 zusammen, und es sieht so aus, als wäre etwas unglücklich. Ich habe durch ein paar Versionen gewesen und Methoden installieren, und wenn ich „make“ oder „make -j4“ die Marke LKW entlang bisOpenCV make fails - "rekompiliere mit -fPIC"

/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.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/libavcodec.a: error adding symbols: Bad value 
collect2: error: ld returned 1 exit status 
make[2]: *** [lib/libopencv_videoio.so.3.0.0] Error 1 
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2 
make: *** [all] Error 2 

gehen Jede Hilfe sehr geschätzt wird. Nochmals vielen Dank, Robert.

+0

Haben Sie das gleiche Problem. Ich entfernte ffmpeg (die libavcodec.a entfernte), gefolgt von kompilieren und neu installieren ... aber das selbe Problem – Pranaysharma

+0

nach der letzten Aktivität hier habe ich überprüft und sah, dass Sie mir einen Gefallen tun und meine Antwort akzeptieren können :) auch wenn es Vor ein paar Jahren ... –

+0

Ah, danke, dass du mir das gesagt hast. –

Antwort

13

Ich hatte das gleiche Problem beim Kompilieren von opencv3 alpha auf Ubuntu 14.04 mit FFMPEG aktiviert. Mein FFMPEG war die git-Version kompiliert mit ./configure make make install

ich FFMPEG neu kompilieren musste mit ./configure --enable-nonfree --enable-pic --enable-shared

, die den Trick für mich getan hat und nach diesem opencv3 zusammengestellt Ordnung.

+0

Sie müssen --enable_shared für alles, was Sie FFmpeg mit zB x264 kompilieren. –

+0

Wie verwendet man dieses Flag mit cmake Befehl? –

+0

@Robert Talamantez Warum haben Sie diese Antwort noch nicht als richtig markiert? Es hat für mich funktioniert. – hammeramr

1

Ich war auf der Suche nach einer Möglichkeit, OpenCV 2.4.11 korrekt zu bauen und das hat es getan. Allerdings ist die korrekte Shared Parameter --enable-shared, so dass die Befehlszeile ist

configure --enable-nonfree --enable-pic --enable-shared

Danke für den Beitrag!

1

OpenCV hat nicht die richtige ffmpeg lib gefunden, wenn der Link /usr/local/lib/libavcodec.a in lib/libopencv_videoio.so.3.0.0 steht.

Eine libavcodec.so sollte zur Verfügung gestellt werden, aber opencv findet nur eine libavcodec.a. Warum? gibt es einige Möglichkeiten:

1) Alt/Neu ffmpeg

Eine alte ffmpeg mit nur statischer Libs in /usr/local/lib und /usr/local/bin installiert ist. Ein neuer ffmpeg mit freigegebener Lib und benutzerdefiniertem Installationspfad ist installiert, aber das System weiß das nicht. Sie müssen http://code.opencv.org/issues/1077 folgen.

2) Keine gemeinsame ffmpeg

Sie sollten ffmpeg mit gemeinsamen lib installieren, wie andere Leute schon gesagt.

3) neue ffmpeg ist nicht „richtig“ installieren

Wenn neuer ffmpeg von Quellcode und in einem customize Pfad aufgebaut ist, sollte der Pfad ein absoluter Pfad sein. Zum Beispiel:

/configure --prefix="$HOME/lib/ffmpeg_build" 

Wenn ein relativer Pfad gesetzt ist, wird der relative Pfad in ffmpeg Einstellungsdatei installiert werden, und opencv wird rechts Libs nicht in die Datei entsprechend finden. Sie möchten möglicherweise in CMakeCache Datei im opencv-Quellverzeichnis suchen, es aufzeichnet libs Pfade müssen im Aufbau.

Verwandte Themen