/ usr / bin / ld: impossibile trovare -lOpenCL


10

Attualmente sto cercando di compilare un semplice programma fornito in OpenCL da questo sito Web. Mi darà il necessario di DeviceInfocui ho bisogno. Dopo aver semplicemente invocato a make, ottengo l'errore di seguito:

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

Ora ho installato usando le istruzioni di questo sito web. Tuttavia, ho ancora ottenere l'errore sopra.

Come posso risolvere questo errore?

Risposte:


14

Il linker non riesce a trovare la OpenCLlibreria.

Dovresti aiutare il linker a trovare la OpenCLlibreria.

Problema simile è stato sollevato qui

La soluzione era quella di creare un collegamento per la libreria a un percorso lib noto:

sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so

Un'altra opzione:

Supponendo che la OpenCLlibreria situata in /usr/lib/x86_64-linux-gnu/te possa anche aggiungere la cartella della libreria al percorso Librerie:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/"

Potrebbe essere necessario aggiornare il "Dynamic Linker":

sudo ldconfig

1
Questo ha funzionato per me! La prima risposta Grazie!
Sharan Duggirala,

3

Come già affermato da Yaron, il linker non sa dove trovare la libreria OpenCL, ovvero non si trova in nessuno dei luoghi in cui la cerca.

Invece di spostarlo in uno di quei posti (ad es. /usr/lib) Suggerirei di informare il linker dove cercarlo tramite la -Lbandiera. Il comando avrebbe quindi letto (notare il -L/usr/lib/x86_64-linux-gnu)

g++ DeviceInfo.cpp -I ../../Cpp_common -L/usr/lib/x86_64-linux-gnu -lOpenCL -o DeviceInfo

Se stai usando un scritto a mano Makefilepuoi semplicemente modificare il comando compilatore / linker in questo modo. Altrimenti dovrai toccare il tuo sistema di compilazione per includerlo.


oppure prova LDFLAGSad es.make 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
steeldriver,

Se stai cercando una soluzione puramente temporanea, anche questo funzionerà. Tuttavia consiglio di farlo LDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/per preservare qualsiasi impostazione precedente
mbeyss,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.