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

В настоящее время пытаясь скомпилировать простую программу, данную в OpenCL с этого веб-сайта. Это даст мне необходимое DeviceInfo то, что мне нужно. После просто вызов a 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

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

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

8
задан 19 February 2018 в 01:23

2 ответа

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

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

Подобный вопрос был поднят здесь

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

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
7
ответ дан 23 November 2019 в 05:40

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

2
ответ дан 23 November 2019 в 05:40

Другие вопросы по тегам:

Похожие вопросы: