Probleme beim Kompilieren von OpenCV für Linux auf einem Optimus-Laptop unter Verwendung von Hummel

2547
ali_m

OK, ich habe eine ziemlich spezifische Frage zu Optimus / CUDA / Treibern:

  • Ich verwende Ubuntu 12.04 auf einem Acer Aspire 5750G. Dieser Laptop hat eine CUDA-fähige GT540M-GPU, aber auch Optimus. Um ihn nutzen zu können, brauche ich Hummel

  • Nach diesen Anweisungen installierte ich neuere NVIDIA-Treiber von ppa:ubuntu-x-swat/x-updatesund installierte dann Bumblebee

  • Ich kann jetzt alles auf der GPU laufen lassen ( optirun glxspheresfunktioniert wie erwartet)

  • Ich versuche jedoch, etwas (OpenCV-2.4.2) mit CUDA-Laufzeitunterstützung zu kompilieren, und ich habe einen Compiler-Fehler festgestellt, der damit zusammenhängt, dass die NVIDIA CUDA-Entwicklertreiber nicht installiert sind

Ich möchte wissen, ob es möglich ist, Hummel in Kombination mit den NVIDIA-Entwicklertreibern zu verwenden. Ist es sicher, das Installationsprogramm zu verwenden, das von der NVIDIA-Entwicklerseite heruntergeladen wurde, oder wird das völlig durcheinander kommen? Gibt es eine bessere Möglichkeit, die Entwicklertreiber zu installieren? Ich suchte nach einer aktuellen PPA, konnte aber keine finden.

3

1 Antwort auf die Frage

4
ali_m

Ok, es stellt sich also heraus, dass ich die Entwickler-Treiber zum Kompilieren von OpenCV nicht verwenden muss!

Ich hatte meine Software-Quellen irgendwie durcheinander gebracht, sodass ich nicht mehr aktualisiert ppa:ubuntu-x-swat/x-updateshabe. Als ich festgelegt, dass ich konnte meine NVIDIA - Treiber aktualisieren 304.43aus 295.49. Ich denke, dass dies der entscheidende Faktor für die Kompilierung von OpenCV war, obwohl ich auch ein Makefile modifizieren musste, damit es funktioniert.

Wenn jemand daran interessiert ist, dasselbe zu tun, habe ich hier die Anweisungen befolgt . Umschreiben:

  • sudo apt-get install Die folgenden Modulabhängigkeiten, falls Sie sie noch nicht haben:

    libopencv-dev build-essential checkinstall cmake pkg-config libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libv4l-dev

  • Laden Sie die neueste OpenCV von hier herunter und dann:

    tar -xvf OpenCV-<version#>.tar.bz2 cd OpenCV-<version#>/ mkdir build cd build 
  • Führen Sie cmakeden Befehl aus, um eine Builddatei zu konfigurieren. Sie müssen cmakeeine Reihe von Optionen übergeben, um anzugeben, wie OpenCV erstellt werden soll. Die genauen Optionen hängen von Ihrem System ab. Sie können sich ein Bild davon machen, welche Optionen verfügbar sind ../CMakeLists.txt. Der genaue Befehl, den ich verwendete, war:

    cmake -D WITH_QT=ON -D WITH_XINE=ON -D WITH_OPENGL=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=ON BUILD_TESTS=ON ENABLE_SSE3=ON ENABLE_SSE4.1=ON ENABLE_SSE4.2=ON WITH_CUDA=ON .. 

    Es fiel mir besonders schwer, die CUDA-Laufzeitunterstützung ( WITH_CUDA=ON) zu kompilieren. Daher die ursprüngliche Frage zu den Treibern.

  • cmakeerstellt eine Datei namens CMakeCache.txt. Ich habe festgestellt, dass ich diese Datei wie hier beschrieben ändern musste, um eine Fehlerverknüpfung zu vermeiden libcuda.so.

    Suchen Sie die Zeile, die beginnt:

    CUDA_CUDA_LIBRARY:FILEPATH= 

    Und füge den Pfad libcuda.soin meinem Fall hinzu:

    CUDA_CUDA_LIBRARY:FILEPATH=/usr/lib/nvidia-current/libcuda.so 
  • Jetzt sollten Sie in der Lage sein, makezu kompilieren (dauert eine Weile ...) und dann sudo make installzu installieren

Ich hoffe, jemand findet das nützlich.

Willkommen bei Super User! Während dies die Frage theoretisch beantworten kann, ist es [bevorzugt] (http://meta.stackexchange.com/q/8259), die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Mit anderen Worten, diese beiden Links umschreiben und nur die Quelle angeben. Es hilft dabei, Link-Rot zu verhindern, wenn diese Websites ausfallen oder sich die URL ändert Canadian Luke vor 12 Jahren 0
Na gut, nehme ich an. Ich zögere, dies zu tun, weil diese Informationen nur sehr indirekt mit dem Thema meiner ursprünglichen Frage zusammenhängen. ali_m vor 12 Jahren 0
Wenn jedoch die Site ausfällt, weiß der durchschnittliche Benutzer möglicherweise nicht, wie Sie die Site erstellt haben, und macht eine Frage / Antwort-Site überflüssig Canadian Luke vor 12 Jahren 0
Ok, ich habe meine Antwort bearbeitet, um den Inhalt der verlinkten Seiten zu umschreiben, und ich habe das Thema meiner ursprünglichen Frage geändert, um den Inhalt der Antwort besser anzugleichen. ali_m vor 12 Jahren 0
Sieht großartig aus! +1 Canadian Luke vor 12 Jahren 0