현재에서의 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
라이브러리를 찾을 수 없습니다 .
링커가 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
를 사용하는 경우 이와 같이 컴파일러 / 링커 명령을 간단히 수정할 수 있습니다. 그렇지 않으면 빌드 시스템을 포함시키는 방법을 만져야합니다.