Setzen von LD_LIBRARY_PATH für CUDA

12

Wenn Sie das CUDA-Toolkit installieren, werden die folgenden Anweisungen auf der Konsole gedruckt.

Stellen Sie sicher, dass Ihr LD_LIBRARY_PATH für 64-Bit-Linux-Distributionen /usr/local/cuda-5.0/lib64:/usr/local/cuda-5.0/lib enthält

ODER

Für 64-Bit-Linux-Distributionen fügen Sie /usr/local/cuda-5.0/lib64 und /usr/local/cuda-5.0/lib zu /etc/ld.so.conf hinzu und führen Sie ldconfig als root aus

Der folgende Code /etc/profilehatte keine Auswirkung.

if [ -z "$LD_LIBRARY_PATH" ]; then    
  LD_LIBRARY_PATH=/usr/local/cuda-5.0/lib64:/usr/local/cuda-5.0/lib
else
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.0/lib64:/usr/local/cuda-5.0/lib
fi
export LD_LIBRARY_PATH

Das heißt, ein Neustart und das Ausgeben echo $LD_LIBRARY_PATHzeigten, dass die Variable nicht definiert wurde.

Um den alternativen Vorschlag auszuprobieren, habe ich die beiden Zeilen zur Datei hinzugefügt, /etc/ld.so.confdamit meine Datei so aussieht

include /etc/ld.so.conf.d/*.conf 
/usr/local/cuda-5.0/lib64
/usr/local/cuda-5.0/lib

Dann gab ich aus:

sudo ldconfig

dann

echo $LD_LIBRARY_PATH

Die Umgebungsvariable wurde immer noch nicht gesetzt. Wie halte ich mich an die oben aufgeführten CUDA-Installationsanweisungen?

H2ONaCl
quelle
1
ldconfig legt LD_LIBRARY_PATH nicht fest, sondern schließt Bibliotheken auf andere Weise ein.
w4etwetewtwet

Antworten:

17

Fügen Sie eine Datei mit der .confErweiterung hinzu /etc/ld.so.conf.d/ , die die Pfade zu den Bibliotheken enthält, und führen Sie dann ldconfig aus. Stellen Sie sicher, dass die Berechtigungen und der Besitz der Datei mit den anderen Dateien im Verzeichnis übereinstimmen.

Dies ist eine systemweite Lösung im Gegensatz zur benutzerspezifischen Lösung zum Ändern von .bashrc.

Auf meinem System habe ich nvidia.confin /etc/ld.so.conf.d/. Die Datei enthält die Zeilen:

/usr/local/cuda-5.0/lib64
/usr/local/cuda-5.0/lib

Wenn Sie die Datei wie folgt erstellen, sudosollten Ihre Berechtigungen in nvidia.confOrdnung sein , aber my ist Eigentümer / Gruppenstamm und rw-r - r-- (oder 644).

Logan Mayfield
quelle
1
Das scheint nicht zu funktionieren. ldconfig setzt den $ LD_LIBRARY_PATH nicht.
Nick
1
Nach meinem Verständnis wird das Problem so behoben, dass Sie die Pfadvariable nicht festlegen müssen. Wenn "nicht funktioniert" bedeutet, dass die Variable nicht gesetzt ist, dann sicher. Wenn "nicht funktioniert" bedeutet, dass CUDA nicht funktioniert, sind weitere Informationen zu Ihrem Problem erforderlich, da dies die CUDA-Entwicklung in meinem Setup aktiviert (und weiterhin aktiviert).
Logan Mayfield
Ich bin mir sicher, dass es für einige Dinge funktioniert. Das Programm, das ich kompilieren wollte, möchte den $ LD_LIBRARY_PATH verwenden, was wahrscheinlich nicht die beste Vorgehensweise ist. Das bedeutet, dass ich ihn setzen muss!
Nick
10

Geben Sie Folgendes ein .bashrc.

if [ -z $LD_LIBRARY_PATH ]; then
  LD_LIBRARY_PATH=/usr/local/cuda-5.0/lib64:/usr/local/cuda-5.0/lib
else
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.0/lib64:/usr/local/cuda-5.0/lib
fi
export LD_LIBRARY_PATH
H2ONaCl
quelle
Ich denke, die bevorzugte Methode ist es, eine .conf-Datei zu erstellen. Ich habe dies in meiner Antwort unten beschrieben.
Logan Mayfield