Je suis novice en Ubuntu et j'utilise Ubuntu 14.04 64 bits. Je veux make
un projet qui utilise cuda
et opencv
j'ai obtenu l'erreur suivante lors de l'exécutioncmake . && 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 /usr/local/cuda/lib64
et j'ai également ajouté au chemin de la bibliothèque:
echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:
C'est la sortie 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 cette ld
recherche dans le /usr/local/cuda/lib64
chemin pour trouver libcudart
?
ls /usr/local/cuda/lib64
?Réponses:
Faites un lien symbolique vers l'
libcuda
endroit où vous leld
recherchez.la source
LD_LIBRARY_PATH
est utilisé pour modifier le comportement de l'ldconfig
outil et des outils associés lors de la recherche des bibliothèques, au moment de l'exécution.L'
ld
outil de l'éditeur de liens n'utilise pas cette variable. Si vous souhaitez utiliser une bibliothèque située dans un répertoire non standard, vous devez utiliser le-L
paramètre de la commande, comme ceci:Si vous avez téléchargé et un projet existant et ne savez pas comment modifier le ou les Makefile (s) existant (s) sans interrompre la compilation entière, vous pouvez exécuter make de la manière suivante:
La variable LDFLAGS (qui peut également être définie dans le Makefile), est utilisée pour passer des arguments spécifiques à l'éditeur de liens (
ld
) lorsqu'elle est lancée par les instructions de compilation.la source
ld: warning: cannot find entry symbol _start; not setting start address
quand j'ai couruld -lcuda -L/usr/local/cuda/lib64
Vous pouvez créer des liens au lieu d'ajouter les chemins:
la source
J'ai corrigé ça! Accédez à votre makefile et changez
à
(si c'est ce que tu as)
Ça a marché pour moi
la source
Résolu
OU copiez tous les fichiers d'en-tête de /usr/lib/cuda-10.1/targets/x86_64-linux/include vers / src / cpp /
Cela a fonctionné pour moi sur Pop-OS 19.10
la source