/usr/bin/ld: не удается найти -lOpenCL

В настоящее время пытаюсь скомпилировать простую программу, заданную в OpenCL из этот вебсайт. Это даст мне необходимые DeviceInfo это мне нужно. После простого вызова make, Я получаю ошибку ниже:

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

Теперь я установил, используя инструкции из этот вебсайт. Тем не менее, я все еще получаю ошибку выше.

Как я могу устранить эту ошибку?

Вы, компоновщик, не можете найти OpenCL библиотека.

Вы должны помочь компоновщику найти OpenCL библиотека.

Был поднят аналогичный вопрос здесь

Решение состояло в том, чтобы создать ссылку для библиотеки на известное местоположение библиотеки:

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

Другой вариант:

Предполагая, что OpenCL библиотека, расположенная в /usr/lib/x86_64-linux-gnu/ вы также можете добавить папку библиотеки в путь к библиотекам:

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

Возможно, вам потребуется обновить "Динамический компоновщик".:

sudo ldconfig

Как уже было сказано Яроном, компоновщик не знает, где найти библиотеку OpenCL, т.е. ее нет ни в одном из мест, которые он ищет.

Вместо того, чтобы перемещать его в одно из этих мест (например /usr/lib) Я бы предложил сообщить компоновщику, где его искать, через -L флаг.Затем команда будет читать (обратите внимание на -L/usr/lib/x86_64-linux-gnu)

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

Если вы используете рукописный Makefile вы можете просто изменить команду компилятора/компоновщика следующим образом. В противном случае вам придется коснуться вашей системы сборки, чтобы включить ее.