Derzeit wird versucht, ein einfaches Programm in OpenCL von dieser Website zu kompilieren . Es wird mir das DeviceInfo
Notwendige geben, das ich brauche. Nach dem einfachen Aufrufen von a make
wird der folgende Fehler angezeigt:
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
Jetzt habe ich mit den Anweisungen von dieser Website installiert . Allerdings bekomme ich immer noch den Fehler oben.
Wie kann ich diesen Fehler beheben?
Wie bereits von Yaron angegeben, weiß der Linker nicht, wo sich die OpenCL-Bibliothek befindet, dh sie befindet sich an keinem der Orte, nach denen sie sucht.
Anstatt es an einen dieser Orte zu verschieben (z. B.
/usr/lib
), würde ich vorschlagen, den Linker darüber zu informieren, wo er über die-L
Flagge danach suchen soll . Der Befehl würde dann lesen (beachten Sie die-L/usr/lib/x86_64-linux-gnu
)Wenn Sie eine Handschrift verwenden
Makefile
, können Sie den Compiler / Linker-Befehl einfach so ändern. Andernfalls müssen Sie Ihr Build-System berühren, um es einzuschließen.quelle
LDFLAGS
zBmake 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
LDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/