web-dev-qa-db-fra.com

Erreur "impossible de trouver -lOpenCL" lors de la création du SDK Cuda

J'ai un ordinateur portable ASUS avec nVidia gt 520m et j'ai pensé à essayer une programmation OpenCL (première fois) sur Ubuntu 11.10. J'ai installé le paquet nvidia-current-dev. Ainsi, j'ai trouvé libOpenCL.so et autres dans le dossier/usr/lib/nvidia-current /:

$razvan@...:~$ locate libOpenCL.so
/usr/lib/nvidia-current/libOpenCL.so
/usr/lib/nvidia-current/libOpenCL.so.1
/usr/lib/nvidia-current/libOpenCL.so.1.0
/usr/lib/nvidia-current/libOpenCL.so.1.0.0
/usr/lib32/nvidia-current/libOpenCL.so
/usr/lib32/nvidia-current/libOpenCL.so.1
/usr/lib32/nvidia-current/libOpenCL.so.1.0
/usr/lib32/nvidia-current/libOpenCL.so.1.0.0

J'ai ensuite installé le CUDA Toolkit pour Ubuntu 10.10 du site Web de nVidia ainsi que le NVIDIA GPU SDK (dans/opt/gpu_sdk).

Quand je vais dans/opt/gpu_sdk/OpenCL et que j'essaie la commande make, je reçois:

razvan@...:/opt/gpu_sdk/OpenCL$ make
make[1]: Entering directory `/opt/gpu_sdk/OpenCL/common'
a - obj/release/oclUtils.cpp.o
make[1]: Leaving directory `/opt/gpu_sdk/OpenCL/common'
make[1]: Entering directory `/opt/gpu_sdk/shared'
make[1]: Leaving directory `/opt/gpu_sdk/shared'
make -C src/oclConvolutionSeparable/
make[1]: Entering directory `/opt/gpu_sdk/OpenCL/src/oclConvolutionSeparable'
/usr/bin/ld: cannot find -lOpenCL
collect2: ld returned 1 exit status
make[1]: *** [../../..//OpenCL//bin//linux/release/oclConvolutionSeparable] Error 1
make[1]: Leaving directory `/opt/gpu_sdk/OpenCL/src/oclConvolutionSeparable'
make: *** [src/oclConvolutionSeparable/Makefile.ph_build] Error 2

Après avoir installé le paquet nvidia-current-dev, je suis allé dans /etc/ld.so.conf.d/ et ai créé nvidia-current.conf où j’ai spécifié/usr/lib/nvidia-current et/usr/lib32/nvidia-current . Ensuite, j'ai utilisé ldconfig pour mettre en cache les nouveaux emplacements.

Inutile de dire que cela n'a pas fonctionné. J'ai également ajouté les variables/usr/lib/nvidia-current et/usr/lib32/nvidia-current à la variable d'environnement LD_LIBRARY_PATH dans l'espoir de fonctionner ... cela n'a pas fonctionné.

4
razvanc

Impossible de définir LD_LIBRARY_PATH associé à/usr/bin/ld de manière spécifique.

Devrait avoir défini LIBRARY_PATH, qui est la variable d’environnement correcte pour le compilateur gnu (utilisé ici).

Quelle que soit la connexion entre LD_LIBRARY_PATH et LIBRARY_PATH (ou dans ce cas, ld et gcc et pourquoi gcc n’utilise pas l’exécutable ld ..

3
Ringtail

Regardez ici pour une bonne explication de LIBRARY_PATH et LD_LIBRARY_PATH: cliquez ici

LIBRARY_PATH est vérifié lors de la compilation, LD_LIBRARY_PATH à l'exécution du programme.

2
Stevo