web-dev-qa-db-fra.com

/ usr / bin / ld: impossible de trouver -lOpenCL

J'essaie actuellement de compiler un programme simple donné dans OpenCL depuis le site this . Cela me donnera le DeviceInfo requis. Après avoir simplement appelé un make, j'obtiens le message d'erreur ci-dessous:

sharan@sharan-X550CC:~/opencl-ex/Ex1$ make 
g++ DeviceInfo.cpp -I ../../Cpp_common  -lOpenCL -o DeviceInfo
/usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status
Makefile:23: recipe for target 'DeviceInfo' failed
make: *** [DeviceInfo] Error 1

Maintenant, j'ai installé en utilisant les instructions de this website. Cependant, je reçois toujours l'erreur ci-dessus.

Comment puis-je résoudre cette erreur?

7
Sharan Duggirala

Votre éditeur de liens ne peut pas trouver la bibliothèque OpenCL.

Vous devriez aider l'éditeur de liens à trouver la bibliothèque OpenCL.

Un problème similaire a été soulevé ici

La solution consistait à créer un lien entre la bibliothèque et un emplacement de bibliothèque connu:

Sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so

Une autre option:

En supposant que la bibliothèque OpenCL située dans /usr/lib/x86_64-linux-gnu/, vous pouvez également ajouter le dossier de la bibliothèque au chemin de la bibliothèque:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/"

Vous devrez peut-être mettre à jour le "lieur dynamique":

Sudo ldconfig
6
Yaron

Comme déjà indiqué par Yaron, l’éditeur de liens ne sait pas où trouver la bibliothèque OpenCL, c’est-à-dire qu’elle n’est recherchée à aucun endroit.

Au lieu de le déplacer vers l'un de ces emplacements (par exemple /usr/lib), je suggérerais d'indiquer à l'éditeur de liens où le rechercher via l'indicateur -L. La commande serait alors lue (notez le -L/usr/lib/x86_64-linux-gnu)

g++ DeviceInfo.cpp -I ../../Cpp_common -L/usr/lib/x86_64-linux-gnu -lOpenCL -o DeviceInfo

Si vous utilisez un Makefilemanuscrit, vous pouvez simplement modifier la commande compiler/linker comme ceci. Sinon, vous devrez toucher votre système de compilation pour savoir comment l'inclure.

2
mbeyss