/ 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бібліотеку.

Аналогічне питання порушено тут

Там було рішення зробити посилання на бібліотеку до відомого місця розташування:

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

Як уже зазначав Ярон, лінкер не знає, де знайти бібліотеку 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 ви можете просто змінити компілятор / команду linker, як це. Інакше вам доведеться торкнутися вашої системи збирання, як її включити.


або спробуйте, LDFLAGSнаприкладmake 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
steeldriver

Якщо ви шукаєте суто тимчасове рішення, це теж зробить трюк. Однак я раджу зробити це, LDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/щоб зберегти будь-які попередні налаштування
mbeyss
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.