Ich bin Ubuntu-Neuling und benutze Ubuntu 14.04 64-Bit. Ich möchte make
ein Projekt, das verwendet cuda
und opencv
ich habe die folgende Fehlermeldung beim Ausführencmake . && make
Linking CXX executable ground_estimation
/usr/bin/ld: cannot find -lcudart
collect2: error: ld returned 1 exit status
make[2]: *** [ground_estimation] Error 1
make[1]: *** [CMakeFiles/ground_estimation.dir/all] Error 2
make: *** [all] Error 2
Dies ist die Ausgabe von ld -lcudart --verbose
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.a failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/local/lib64/libcudart.so failed
attempt to open //usr/local/lib64/libcudart.a failed
attempt to open //lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //lib64/libcudart.so failed
attempt to open //lib64/libcudart.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/lib64/libcudart.so failed
attempt to open //usr/lib64/libcudart.a failed
attempt to open //usr/local/lib/libcudart.so failed
attempt to open //usr/local/lib/libcudart.a failed
attempt to open //lib/libcudart.so failed
attempt to open //lib/libcudart.a failed
attempt to open //usr/lib/libcudart.so failed
attempt to open //usr/lib/libcudart.a failed
libcudart
existieren in /usr/local/cuda/lib64
und ich fügte auch zu Bibliothekspfad hinzu:
echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:
Dies ist die Ausgabe von ls /usr/local/cuda/lib64
:
libcublas_device.a libcufftw.so.6.0.37 libnppi.so.6.0
libcublas.so libcuinj64.so libnppi.so.6.0.37
libcublas.so.6.0 libcuinj64.so.6.0 libnpps.so
libcublas.so.6.0.37 libcuinj64.so.6.0.37 libnpps.so.6.0
libcudadevrt.a libcurand.so libnpps.so.6.0.37
libcudart.so libcurand.so.6.0 libnvblas.so
libcudart.so.6.0 libcurand.so.6.0.37 libnvblas.so.6.0
libcudart.so.6.0.37 libcusparse.so libnvblas.so.6.0.37
libcudart_static.a libcusparse.so.6.0 libnvToolsExt.so
libcufft.so libcusparse.so.6.0.37 libnvToolsExt.so.1
libcufft.so.6.0 libnppc.so libnvToolsExt.so.1.0.0
libcufft.so.6.0.37 libnppc.so.6.0 libOpenCL.so
libcufftw.so libnppc.so.6.0.37 libOpenCL.so.1
libcufftw.so.6.0 libnppi.so
Was soll ich tun, ld
um diese Suche im /usr/local/cuda/lib64
Pfad zu finden libcudart
?
ls /usr/local/cuda/lib64
?Antworten:
Stellen Sie einen symbolischen Link zu
libcuda
demld
Ort her, an dem gesucht wird.quelle
LD_LIBRARY_PATH
wird verwendet, um das Verhalten derldconfig
und verwandter Tools bei der Suche nach Bibliotheken zur Ausführungszeit zu ändern .Das
ld
Linker-Tool verwendet diese Variable nicht. Wenn Sie eine Bibliothek verwenden möchten, die sich in einem nicht standardmäßigen Verzeichnis befindet, müssen Sie den-L
Parameter des Befehls wie folgt verwenden:Wenn Sie heruntergeladen und Projekt vorhandene und nicht weiß , wie die vorhandene Makefile (s) zu ändern , ohne die ganze Zusammenstellung zu brechen, können Sie laufen machen die folgende Art und Weise:
Die Variable LDFLAGS (die auch im Makefile definiert sein kann) wird verwendet, um bestimmte Argumente an den Linker (
ld
) zu übergeben, wenn dieser von den Kompilierungsanweisungen gestartet wird.quelle
ld: warning: cannot find entry symbol _start; not setting start address
beim Laufenld -lcuda -L/usr/local/cuda/lib64
Sie können Verknüpfungen erstellen, anstatt die Pfade hinzuzufügen:
quelle
Ich habe das behoben! Gehe zu deinem Makefile und ändere es
zu
(wenn du das hast)
Es hat bei mir funktioniert
quelle
Gelöst
ODER kopieren Sie alle Header-Dateien von /usr/lib/cuda-10.1/targets/x86_64-linux/include nach / src / cpp /
Es funktionierte für mich unter Pop-OS 19.10
quelle