web-dev-qa-db-fra.com

"/ usr / bin / ld: impossible de trouver -lcudart"

Je suis novice sur Ubuntu et utilise Ubuntu 14.04 64 bits. Je veux make un projet qui utilise cuda et opencv J'ai eu l'erreur suivante lors de l'exécution de cmake . && 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

Ceci est la sortie de 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 existe dans /usr/local/cuda/lib64 et j'ai également ajouté à Library Path:

echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:

Voici le résultat de 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

Que dois-je faire pour que ld cherche dans /usr/local/cuda/lib64 chemin afin de trouver libcudart?

12
Arash

Créez un lien symbolique vers libcudaldle recherche.

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

LD_LIBRARY_PATH permet de modifier le comportement de ldconfig et des outils associés lors de la recherche des bibliothèques, au moment de l'exécution.

L'outil de l'éditeur de noms ld n'utilise pas cette variable. Si vous souhaitez utiliser une bibliothèque située dans un répertoire non standard, vous devez utiliser le paramètre -L de la commande, comme ceci:

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

Si vous avez téléchargé un projet existant et que vous ne savez pas comment modifier le ou les fichiers Makefile existants sans interrompre la compilation, vous pouvez exécuter make de la manière suivante:

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

La variable LDFLAGS (qui peut également être définie dans le Makefile) sert à transmettre des arguments spécifiques à l'éditeur de liens (ld) lorsqu'il est lancé par les intructions de compilation.

8
Benoit

Vous pouvez créer des liens au lieu d’ajouter les chemins:

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

J'ai corrigé ça! Allez dans votre makefile et changez

/usr/local/cuda/

à

/usr/local/cuda-7.0

(si c'est ce que tu as)

Ça a fonctionné pour moi

1
Antony Savvidi

Résolu

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/

OU copier tous les fichiers d'en-tête de /usr/lib/cuda-10.1/targets/x86_64-linux/include dans/src/cpp /

Cela a fonctionné pour moi sur Pop-OS 19.10

0
Ghanshyam Chandra