2013-12-16 18 views
5

Ich habe versucht, Opencv auf Heroku vergeblich zu installieren. Ich habe versucht, Heroku-Amboss für die Installation zu verwenden und versuche nun, opencv über die Bash-Shell zu installieren. Zuerst habe ich installiert Cmake aber dann, wenn ich zu make opencv versuchen ich unweigerlich die folgende Fehlermeldung:OpenCV Python Linker Fehler

Linking CXX shared library ../../lib/cv2.so 
/usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libpython2.7.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
make[2]: *** [lib/cv2.so] Error 1 
make[1]: *** [modules/python/CMakeFiles/opencv_python.dir/all] Error 2 
make: *** [all] Error 2 

Hier sind die genauen Befehle, die ich verwende:

# connect to bash shell 

heroku run bash 
cd /tmp 

# Downloading and Installing cmake: 

curl -s http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.Z > cmake.tar.gz 
tar zxf cmake.tar.gz 
cd cmake-2.8.12.1/ 
./bootstrap 
make 
make install 

# Download and Install OpenCV 

curl -s https://s3.amazonaws.com/nerdglasses/opencv/OpenCV-2.4.2.tar.bz2 > opencv.tar.gz 
tar xf opencv.tar.gz 
cd OpenCV-2.4.2/ 
../cmake-2.8.12.1/bin/cmake -DBUILD_SHARED_LIBS=NO -DCMAKE_SHARED_LINKER_FLAGS="-fPIC" -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_OPENEXR=OFF -DCMAKE_FIND_ROOT_PATH=/app/.heroku -DCMAKE_INSTALL_PREFIX=/app/.heroku . 
make # ERROR HERE 

Wer weiß, wie dies zu beheben ? Oder gibt es einen besseren Weg, opencv auf Heroku für eine Python Web App zu installieren?

+1

Sieht aus wie ein Tippfehler in Ihrem CMake-Befehl. An der Vorderseite des 'DCMAKE_SHARED_LINKER_FLAGS =" - fPIC "' -Arguments scheint ein '-' zu fehlen. – Fraser

+0

Also sollte ich versuchen 'DCMAKE_SHARED_LINKER_FLAGS =" - fPIC "'? –

+0

Nein - Entschuldigung - ich meinte '-DMAKE_SHARED_LINKER_FLAGS =" - fPIC "' – Fraser

Antwort

2

Sie müssen Python mit gemeinsamen und statischen Weg neu installieren.

Laden Sie zuerst die Python-Quelldatei erneut herunter.

und dann ..

./configure --enable-shared --enable-static 
make 
make install 

Auf diese Weise dieses Problem heraus lösen könnten.

Hier ist der Link, den Sie vielleicht wissen möchten.

Installing OpenCV with python module on CentOS goes wrong

0

Das gleiche Problem von mir auf Linux Mint 17,3 konfrontiert wurde, während Caffe Installation und OpenCV Python Verknüpfung

Ich wollte nicht wieder installieren Python mit --enable-shared Option, da Es gab einige Pakete, die von der nativen Python-Installation abhängig waren.

Die Installation von der offiziellen Website ist kein positionsunabhängiger Code, da enable shared nicht während der Konfiguration von Python bereitgestellt wurde. [PIC, Compiler-Flag muss verwendet werden].

Auch nach der Verwendung von -fPIC kein Glück da war und da Python an: /usr/local/lib/python2.7 für mich nicht sinnvoll ist, entschieden, es unter Befehl

sudo rm -rf /usr/local/lib/python2.7

mit zu entfernen Voila! Es funktioniert jetzt. Dies erlaubte Python, positionsunabhängiger Code zu sein, da er auf der Paketinstallation basiert.