En essayant de "Faire" CUDA SDK, ld ne peut pas trouver la bibliothèque, ldconfig dit qu'elle peut
Je sais qu'il y a beaucoup d'autres questions semblables à celle-ci, mais aucune des solutions postulé il y a de travail pour moi
Fondamentalement, rendant l'exemple du SDK fichiers, j'obtiens /usr/bin/ld: cannot find -lcuda
qui serait assez facile "de trouver la bibliothèque et de le jeter à ldconfig", à l'exception ldconfig déjà dit qu'il en a...
$ sudo ldconfig -v | grep cuda
/usr/local/cuda/lib64:
libcudartemu.so.3 -> libcudartemu.so.3.0.14
libcudart.so.3 -> libcudart.so.3.0.14
/usr/local/cuda/lib:
libcudartemu.so.3 -> libcudartemu.so.3.0.14
libcudart.so.3 -> libcudart.so.3.0.14
libcuda.so.1 -> libcuda.so.195.36.15
libcuda.so.1 -> libcuda.so.195.36.15
libicudata.so.42 -> libicudata.so.42.1
Et j'ai vérifié, il y a un lien symbolique libcuda.so -> libcuda.so.1
mais je suis encore confus quant à pourquoi libcuda.so -> ...
ne pas montrer
Je doit manquer quelque chose de vraiment évident. Des idées?
Trouve cette question par l'intermédiaire de Google. Depuis que je suis maintenant un problème similaire de 3 ans plus tard, j'ai pensé que je remarque ma solution: Pour au moins le CUDA 5.0 SDK échantillons et mon pilote actuel (304.64), ce problème peut être résolu en utilisant
make EXTRA_LDFLAGS="-L /usr/lib64/nvidia"
(commutateur lib64 pour lib sur les systèmes 32 bits). L'éditeur de liens est à la recherche dans le répertoire /usr/lib(64), mais le pilote installé choses dans usr/lib(64)/nvidia, mais la condition des makefiles faire usage de EXTRA_LDFLAGS
.OriginalL'auteur Bolster | 2010-04-26
Vous devez vous connecter pour publier un commentaire.
ldconfig
ne traite qu'avec des bibliothèques d'exécution, tandis queld
traite de la construction des bibliothèques. Selon la façon dont vous avez installé le CUDA bibliothèques, vous devrez peut-être installer un paquet supplémentaire pour le lien symbolique utilisée à la compilation, ou vous pourriez avoir besoin pour passer un-L
option de gcc ou ld, afin de lui dire où le moment de la construction, lien symbolique est.Pas de. Et la modification de
/etc/ld.so.conf.d
affecte uniquement les ld.donc, ce qui affecte seulement l'exécution. Si vous voulez une sorte de semi-permanent, la solution, alors vous devriez envisager de créer un makefile pour votre projet.C'est effectivement une lacune dans le CUDA SDK Makefiles. Ils devraient passer le courant -L'option par défaut. Le lieu de la mettre est
C/common/common.mk:148
. Modifiez cette ligne pourLINKFLAGS += -L/usr/lib/nvidia-current
.OriginalL'auteur Ignacio Vazquez-Abrams
Ajouter .bash_profile
et de la source .bash_profile
make LIBRARY_PATH=/usr/lib/nvidia-current:$LIBRARY_PATH
lors de la construction du SDK exemples de code.Je upvoted cette réponse, mais j'ai vite constaté cela ne fonctionne pas pour moi et je ne peux pas annuler la upvote. Cependant, je suis en utilisant une autre bibliothèque au lieu de CUDA.
OriginalL'auteur ppirate
Essayez d'ajouter-L/usr/local/cuda/lib avant -lcuda sur le compilateur/linker ligne de commande.
OriginalL'auteur zvrba