it-swarm.com.de

"/ usr / bin / ld: -lcudart kann nicht gefunden werden"

Ich bin Ubuntu-Neuling und benutze Ubuntu 14.04 64-Bit. Ich möchte make ein Projekt, das cuda und opencv verwendet. Beim Ausführen von cmake . && make ist folgende Fehlermeldung aufgetreten.

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 existiert in /usr/local/cuda/lib64 und ich habe auch den Bibliothekspfad hinzugefügt:

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, um ld in /usr/local/cuda/lib64 nach libcudart zu suchen?

12
Arash

Stellen Sie einen symbolischen Link zu libcuda her, in dem ld nach ihm sucht.

Sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
18
AlexGreg

LD_LIBRARY_PATH wird verwendet, um das Verhalten von ldconfig und verwandten Tools bei der Suche nach Bibliotheken zur Ausführungszeit zu ändern.

Das Linker-Tool ld verwendet diese Variable nicht. Wenn Sie eine Bibliothek verwenden möchten, die sich in einem nicht standardmäßigen Verzeichnis befindet, müssen Sie den Parameter -L des Befehls wie folgt verwenden:

ld -lcuda -L/usr/local/cuda/lib64

Wenn Sie ein vorhandenes Projekt heruntergeladen haben und nicht wissen, wie Sie die vorhandenen Makefiles ändern können, ohne die gesamte Kompilierung zu unterbrechen, können Sie make folgendermaßen ausführen:

export LDFLAGS=-L/usr/local/cuda/lib64
make

Die Variable LDFLAGS (die auch im Makefile definiert werden kann) wird verwendet, um bestimmte Argumente an den Linker (ld) zu übergeben, wenn dieser durch die Kompilierungsanweisungen gestartet wird.

9
Benoit

Sie können Verknüpfungen erstellen, anstatt die Pfade hinzuzufügen:

ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
2
chaos

Ich habe das behoben! Gehe zu deinem Makefile und ändere es

/usr/local/cuda/

zu

/usr/local/cuda-7.0

(wenn du das hast)

Es hat bei mir funktioniert

1
Antony Savvidi

Gelöst

git clone https://github.com/inducer/pycuda.git
cd pycuda
Sudo configure --cuda-root=/usr/lib/cuda-10.1

Sudo ln -s /usr/lib/cuda-10.1/targets/x86_64-linux/include src/cpp/

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

0