/ usr / bin / ld : -lOpenCL을 찾을 수 없습니다


10

현재에서의 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

이제부터의 지시에 사용하여 설치 한 웹 사이트를. 그러나 여전히 위의 오류가 발생합니다.

이 오류를 어떻게 해결할 수 있습니까?

답변:


14

링커에서 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

1
이것은 나를 위해 일했다! 첫 번째 대답. 감사합니다!
Sharan Duggirala

3

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


또는 LDFLAGS예를 들어 보십시오make 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
steeldriver

순전히 임시 해결책을 찾고 있다면 이것도 속임수입니다. 그러나 나는 LDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/이전 설정을 유지 하기 위해 그것을 권장합니다
mbeyss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.