В настоящее время пытаюсь скомпилировать простую программу, приведенную в 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
Теперь я установил, используя инструкции с этого сайта. Тем не менее, я все еще получаю ошибку выше.
Как я могу решить эту ошибку?
Как уже сказал Ярон, компоновщик не знает, где найти библиотеку OpenCL, то есть он находится ни в одном из мест, где он ищет ее.
Вместо того, чтобы перемещать его в одно из этих мест (например
/usr/lib
), я бы предложил сообщить компоновщику, где его искать через-L
флаг. Затем команда прочитает (обратите внимание на-L/usr/lib/x86_64-linux-gnu
)Если вы используете рукописный текст,
Makefile
вы можете просто изменить команду компилятора / компоновщика следующим образом. В противном случае вам придется прикоснуться к вашей системе сборки, как ее включить.источник
LDFLAGS
например,make 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
LDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/
чтобы сохранить все предыдущие настройки