2017-03-02 10 views
0

Ich habe versucht, Darknet (YOLO) mit Cuda und Opencv zu kompilieren. Ich sie zusammengestellt und es gibt keine Fehler, aber es warnt wie folgt aus:libcudart.so.7.5: Gemeinsame Objektdatei kann nicht geöffnet werden: Keine solche Datei oder Verzeichnis

/usr/bin/ld: warning: libcudart.so.7.5, needed by /usr/local/lib/libopencv_core.so, not found (try using -rpath or -rpath-link)  

Wenn ich versuche, mit dem Beispiel aus https://pjreddie.com/darknet/yolo/, ein Fehler kommen.

./darknet: error while loading shared libraries: libcudart.so.7.5: cannot open shared object file: No such file or directory 

Ich weiß nicht, wie das zu lösen ist.

Unten ist mein System

OS = Ubuntu 16.04 LTS 
CUDA = 8.0 
OPENCV = 2.4 

nvcc -V mit diesem diesen Befehl

nvcc: NVIDIA (R) Cuda compiler driver 
Copyright (c) 2005-2016 NVIDIA Corporation 
Built on Sun_Sep__4_22:14:01_CDT_2016 
Cuda compilation tools, release 8.0, V8.0.44 

ich mit opencv wie von http://milq.github.io/install-opencv-ubuntu-debian/

sudo apt-get install libopencv-dev python-opencv 

Ich habe Option Gebrauch gezeigt installiert Terminal Ergebnis Typing zwei von der Seite, aber während.210 Prozess, es zurückgeben wird folgende Fehler

modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/build.make:2982: recipe for target 'modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o' failed 
make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error 1 
CMakeFiles/Makefile2:16054: recipe for target 'modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all' failed 
make[1]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all] Error 2 
make[1]: *** Waiting for unfinished jobs.... 
[ 59%] Linking CXX shared library ../../lib/libopencv_photo.so 
[ 59%] Built target opencv_photo 
Makefile:160: recipe for target 'all' failed 
make: *** [all] Error 2 

Ich habe bereits den Weg für CUDA innen .bashrc und legen Sie es aber der gleiche Fehler angezeigt. ist unter dem Weg für CUDA in meinem .bashrc

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64" 
export CUDA_HOME=/usr/local/cuda 
export PATH=${CUDA_HOME}/bin:${PATH} 

Danke für Ihre Hilfe.

Antwort

2

Ihre Fehlermeldung zeigt an, dass Version 7.5 der CUDA-Laufzeit von OpenCV benötigt wird (dh es wurde mit dieser Version von CUDA kompiliert. Ihre installierte Version von CUDA ist 8.0. Das Hinzufügen ihres Bibliothekspfads wird nicht helfen, eine geeignete Version zu finden für OpenCV.

Build-OpenCV gegen CUDA 8.0, oder installieren CUDA 7.5 und das Bibliotheksverzeichnis zu LD_LIBRARY_PATH hinzufügen.

Technisch Sie auch ein gemischtes Build versuchen könnte (dh nur das Bibliotheksverzeichnis zu LD_LIBRARY_PATH CUDA 7.5 das hinzufügen, vorzugsweise nach der Pfad CUDA 8.0), jedoch zwei Versionen des CUDA-Laufzeit wird wahrscheinlich zu Problemen führen (ich habe es noch nie versucht), und ich würde empfehlen, dagegen.

+0

Ich hoffe nicht, CUDA neu zu installieren, weil das wegen meines X-Server-Fehlers, den ich schon mal erlebt habe, ein Schmerz in meinem Arsch war. Wie auch immer, du hast gesagt, ooencv gegen cuda 8.0 zu kompilieren, bedeutet das, dass ich das opencv von der Quelle kompilieren muss (dh lade die Quelldatei vom github repository herunter, bilde mit 'cmake' und mache' make') oder es gibt eine Kommandozeile dafür (zB sudo apt-get install ...) Danke für deine Antwort – Fang

0

Dies ist die Lösung für andere, die das gleiche Problem haben wie ich. Ich benutze den Vorschlag von daveselinger hier https://github.com/opencv/opencv/issues/6677

Git klonen das Repository und Git Checkout 3.1.0 mit Cuda 8 (siehe Link). Danach nur cmake und make

Es funktionierte für mich.

Verwandte Themen