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