Obecnie próbuję skompilować prosty program podany w OpenCL z tej strony. Da mi to DeviceInfo
, czego potrzebuję. Po zwykłym wywołaniu a pojawia make
się następujący błąd:
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
Teraz zainstalowałem przy użyciu instrukcji z tej strony. Jednak nadal pojawia się błąd powyżej.
Jak mogę rozwiązać ten błąd?
Jak już stwierdził Yaron, linker nie wie, gdzie znaleźć bibliotekę OpenCL, tzn. Nie ma jej w żadnym miejscu, którego szuka.
Zamiast przenosić go do jednego z tych miejsc (np.
/usr/lib
) Sugerowałbym poinformować linkera, gdzie szukać go za pomocą-L
flagi. Polecenie przeczytałoby następnie (zwróć uwagę na-L/usr/lib/x86_64-linux-gnu
)Jeśli używasz odręcznie
Makefile
, możesz po prostu zmodyfikować polecenie kompilatora / linkera w ten sposób. W przeciwnym razie będziesz musiał dotknąć systemu kompilacji, jak go uwzględnić.źródło
LDFLAGS
np.make 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
LDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/
aby zachować poprzednie ustawienia