2015-06-05 16 views
6

Ich versuche, CUDA 7.0 auf Ubuntu 14.04 zu installieren. Ich habe die Installationsanweisungen wie beschrieben here befolgt. Genauer gesagt, ich habe in Abschnitt gefolgt Schritte 3.6 und Kapitel 6. Während die Beispiele kompilieren (Abschnitt 6.2.2.2) mit make, ich die folgende Fehlermeldung erhalten:CUDA 7.0 Fehler beim Kompilieren der Beispiele

make[1]: Entering directory `/usr/local/cuda-7.0/samples/3_Imaging/cudaDecodeGL' 
/usr/local/cuda-7.0/bin/nvcc -ccbin g++ -m64  -gencode arch=compute_20, 
code=compute_20 -o cudaDecodeGL FrameQueue.o ImageGL.o VideoDecoder.o 
VideoParser.o VideoSource.o cudaModuleMgr.o cudaProcessFrame.o 
videoDecodeGL.o -L../../common/lib/linux/x86_64 -L/usr/lib/"nvidia-346" 
-lGL -lGLU -lX11 -lXi -lXmu -lglut -lGLEW -lcuda -lcudart -lnvcuvid 
/usr/bin/ld: cannot find -lnvcuvid 
collect2: error: ld returned 1 exit status 
make[1]: *** [cudaDecodeGL] Error 1 
make[1]: Leaving directory `/usr/local/cuda-7.0/samples/3_Imaging/cudaDecodeGL' 
make: *** [3_Imaging/cudaDecodeGL/Makefile.ph_build] Error 2 
+1

Die Tatsache, dass zusätzliche Bibliotheken benötigt werden, um einige der Proben zu erstellen, wird in Abschnitt 6.3.1 erwähnt.Für Ubuntu, versuchen Sie: 'sudo apt-get installieren freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev' Und Sie können in anderen Proben (wie simpleMPI), die andere Komponenten benötigen. Wenn Sie sich nicht für diese speziellen Beispiele interessieren, können Sie 'make -k' machen, um den Beispiel-Build-Prozess fortzusetzen, wobei diejenigen, die nicht erstellt werden, übersprungen werden. –

+2

Entschuldigung, das oben genannte ist für Ihr Problem nicht relevant. libnvcuvid.so sollte vom Treiber irgendwo in '/ usr/lib' installiert worden sein. Es scheint, dass die von Ihnen verwendete Installation des Paketmanagers es nicht dort platziert hat, wo dieses Makefile es erwartet hatte, es in'/usr/lib/"nvidia-346 zu finden "Das wird nicht einfach zu beheben sein. Wenn Sie sich für dieses Beispiel nicht interessieren, können Sie 'make -k' trotzdem verwenden. Ansonsten würde ich vorschlagen, mit einer sauberen Ladung von Ubuntu anzufangen und die Runfile-Installer-Methode zu verwenden. Möglicherweise haben Sie in der Installationsmethode des Paketmanagers nicht das richtige Repo für ubuntu 14.04 verwendet. –

+0

Danke für die Antwort, @RobertCrovella. Ich habe libnvcuvid.so in '/ usr/lib/nvdia-331' gefunden. Was muss jetzt getan werden? Wenn überhaupt muss ich über die Runfile-Installer-Methode installieren, wie kann ich dann alle Komponenten von Cuda, die mit der Installationsmethode des Paketmanagers installiert wurden, deinstallieren? Muss ich sie auch deinstallieren? – Pras

Antwort

9

Wenn Sie feststellen, gibt es -L/usr/lib/"nvidia-346". In meinem Fall habe ich nvidia-349 installiert. Was für mich funktionierte, ist, NVIDIA_CUDA-7.0_Samples/3_Imaging/cudaDecodeGL/findglllib.mk zu bearbeiten und UBUNTU_PKG_NAME = "nvidia-346" zu nvidia-349 zu ändern.

+1

Aber das würde in OPs Fall nicht funktionieren, wo das gefundene Paket 'nvidia-331' war. Das ist nicht kompatibel mit CUDA 7. –

+2

Was ich sagen wollte ist, dass in diesem CUDA-Beispiel die Versionsnummer in der .mk-Datei fest codiert ist und entsprechend der aktuellen Installation geändert werden muss. – andoum

+0

Aber selbst wenn es geändert würde, um der gegenwärtigen Installation des OP zu entsprechen, (d. H. "Nvidia-331") ** würde es ** nicht funktionieren. 'nvidia-331' ist nicht mit CUDA7 kompatibel. Ihre Antwort kann daher nicht zur Lösung des OP-Problems verwendet werden. Also muss die Installation repariert werden. Und mit einer ordnungsgemäßen/festen Installation müssen Sie nicht hartcodierte .mk-Dateien ändern. –

2

Um CUDA 7.0 unter Ubuntu 14.04 richtig zu installieren, benötigen Sie einen Nvidia-Treiber der Version 346 oder höher.

Wenn Sie die .deb-Installationsmethode verwenden, wird der NVIDIA-Grafiktreiber automatisch installiert.

Wenn Sie die Datei .run Installationsmethode verwendet und erwählte nicht den nvidia-Treiber zu installieren, können Sie den Treiber manuell danach durch den Paketmanager installieren:

sudo apt-add-repository ppa:xorg-edgers/ppa && sudo apt-get update 

    sudo apt-get install nvidia-346 nvidia-346-dev nvidia-346-uvm libcuda1-346 nvidia-libopencl1-346 nvidia-icd-346 

In meinem Fall habe ich installiert nvidia-352 danach wegen eines Fehlers in Nvidia-346 und ich stolperte über den gleichen Fehler.

andoum Ansatz von manuell die hartcodierte UBUNTU_PKG_NAME = "nvidia-346" zu UBUNTU_PKG_NAME = "nvidia-352" in NVIDIA_CUDA-7.0_Samples/3_Imaging/cudaDecodeGL/findgllib.mk Wechsel funktionierte gut für mich.

2

traf ich das gleiche Problem und Lösung ist, dass Put-Pfad von nvidia in Systempfad:

sudo gedit /etc/environment 

diesen Pfad in Umgebung hinzufügen

LIBRARY_PATH=/usr/lib/your_nvidia_edition:$LIBRARY_PATH

0

In der Tat ich dieses Problem gestoßen, als ich gemacht eine Marke. Ich habe Cuda 8.0 unter meinem Ubuntu 16.04 installiert. Dieses Problem verwirrte mich seit einigen Wochen und ich war fast geneigt, Ubuntu dafür neu zu installieren, nachdem ich viele Vorschläge über Google überprüft hatte, aber schließlich habe ich es kürzlich selbst angesprochen.

Als Erstes sollten Sie alle UBUNTU_PKG_NAME = ## nvidia-3xx ## zu der von Ihnen tatsächlich installierten nvidia-Treiberversion ersetzen, wie oben empfohlen. Dann werden Sie wahrscheinlich einen Kompilierfehler erhalten, nachdem Sie eine neue Marke erstellt haben. In meinem Fall habe ich die Link Fehler wie

/usr/bin/ld: warning: libGLX.so.0, needed by /usr/lib/nvidia- 
375/libGL.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libGLdispatch.so.0, needed by /usr/lib/nvidia- 
375/libGL.so, not found (try using -rpath or -rpath-link) 
.... 

oder was auch immer enthält fehlende Link-Fehler. finden Sie die Dateien, die Sie vermissen wie

$ locate libGLX.so. 
    /usr/lib/nvidia-375/libGLX.so.0 
    /usr/lib32/nvidia-375/libGLX.so.0 
$ locate libGLdispatch.so.0 
    /usr/lib/nvidia-375/libGLdispatch.so.0 
    /usr/lib32/nvidia-375/libGLdispatch.so.0 

Der Fehler, der oben ist wahrscheinlich verursacht die Kompilierung-Dateien können nicht in den Standard-CUDA-Bibliotheken finden, wie Sie festgelegt, so dass Sie nur die fehlenden Dateien zu /usr/lib kopieren müssen/Nvidia-3xx/ (der tatsächliche Pfad in Ihrem Fall) und dies sollte funktionieren (es funktioniert in meinem Fall), wenn es nicht vielleicht Sie versuchen könnten, die neuen hinzufügen Dateien mit dem einen, der eine

benötigen
$ sudo ln -s (requested file) (requesting file). 

Hoffe, das wird helfen.

Verwandte Themen