/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.

비슷한 문제가 제기되었습니다여기

해결책은 알려진 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

답변2

Yaron이 이미 언급했듯이 링커는 OpenCL 라이브러리를 찾을 수 있는 위치를 모릅니다. 즉, 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컴파일러/링커 명령을 다음과 같이 간단히 수정할 수 있습니다. 그렇지 않으면 빌드 시스템을 포함하는 방법을 터치해야 합니다.

관련 정보