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
?
Créez un lien symbolique vers libcuda
où ld
le recherche.
Sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
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.
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/
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
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