Actualmente estoy tratando de compilar un programa simple dado en OpenCL desde este sitio web. Me dará lo requerido DeviceInfo
que necesito. Después de simplemente invocar a make
, obtengo 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 usando las instrucciones de este sitio web. Sin embargo, sigo recibiendo el error anterior.
¿Cómo puedo resolver este error?
Como ya dijo Yaron, el enlazador no sabe dónde encontrar la biblioteca OpenCL, es decir, no está 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-L
bandera. El comando luego leería (tenga en cuenta el-L/usr/lib/x86_64-linux-gnu
)Si está utilizando un manuscrito
Makefile
, simplemente puede modificar el comando del compilador / enlazador de esta manera. De lo contrario, tendrá que tocar su sistema de compilación para incluirlo.fuente
LDFLAGS
por ejemplomake 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
LDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/
para preservar cualquier configuración anterior