/usr/bin/ld: не могу найти -lOpenCL

/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 -lOpenCL
collect2: error: ld returned 1 exit status
Makefile:23: recipe for target 'DeviceInfo' failed
make: *** [DeviceInfo] Error 1

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

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

решение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/"

Возможно, вам придется обновить «Dynamic Linker»:

sudo ldconfig

решение2

Как уже сказал Ярон, компоновщик не знает, где найти библиотеку 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вы можете просто изменить команду компилятора/линкера, как здесь. В противном случае вам придется трогать вашу систему сборки, чтобы включить ее.

Связанный контент