/usr/bin/ld: no se puede encontrar -lOpenCL

/usr/bin/ld: no se puede encontrar -lOpenCL

Actualmente estoy intentando compilar un programa simple proporcionado en OpenCL desdeestesitio web. Me dará lo requerido DeviceInfoque necesito. Después de simplemente invocar a make, aparece el siguiente error:

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

Ahora lo he instalado siguiendo las instrucciones deestesitio web. Sin embargo, sigo recibiendo el error anterior.

¿Cómo puedo solucionar este error?

Respuesta1

Su vinculador no puede encontrar la OpenCLbiblioteca.

Deberías ayudar al vinculador a encontrar la OpenCLbiblioteca.

Se planteó una cuestión similaraquí

La solución fue crear un enlace para la biblioteca a una ubicación de biblioteca conocida:

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

Otra opción:

Suponiendo que la OpenCLbiblioteca ubicada en /usr/lib/x86_64-linux-gnu/usted también puede agregar la carpeta de la biblioteca a la ruta de Bibliotecas:

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

Es posible que necesites actualizar el "Enlazador dinámico":

sudo ldconfig

Respuesta2

Como ya afirmó Yaron, el vinculador no sabe dónde encontrar la biblioteca OpenCL, es decir, no se encuentra en ninguno de los lugares donde la busca.

En lugar de moverlo a uno de esos lugares (por ejemplo /usr/lib), sugeriría informar al vinculador dónde buscarlo a través de la -Lbandera. El comando entonces diría (tenga en cuenta el -L/usr/lib/x86_64-linux-gnu)

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

Si está utilizando un comando escrito a mano, Makefilesimplemente puede modificar el comando del compilador/enlazador de esta manera. De lo contrario, tendrá que tocar su sistema de compilación para incluirlo.

información relacionada