/usr/bin/ld: não é possível encontrar -lOpenCL

/usr/bin/ld: não é possível encontrar -lOpenCL

Atualmente tentando compilar um programa simples fornecido em OpenCL a partir deesselocal na rede Internet. Isso me dará o DeviceInfoque preciso. Depois de simplesmente invocar a make, recebo o erro abaixo:

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

Agora eu instalei usando as instruções deesselocal na rede Internet. No entanto, ainda recebo o erro acima.

Como posso resolver esse erro?

Responder1

Seu vinculador não consegue encontrar a OpenCLbiblioteca.

Você deve ajudar o vinculador a encontrar a OpenCLbiblioteca.

Questão semelhante foi levantadaaqui

A solução foi criar um link da biblioteca para um local conhecido da lib:

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

Outra opção:

Supondo que OpenCLa biblioteca esteja localizada em /usr/lib/x86_64-linux-gnu/você também pode adicionar a pasta da biblioteca ao caminho Bibliotecas:

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

Pode ser necessário atualizar o "Dynamic Linker":

sudo ldconfig

Responder2

Como já dito por Yaron o linker não sabe onde encontrar a biblioteca OpenCL, ou seja, ela não está em nenhum dos locais onde a procura.

Em vez de movê-lo para um desses locais (por exemplo /usr/lib), sugiro informar ao vinculador onde procurá-lo por meio do -Lsinalizador. O comando seria então lido (observe o -L/usr/lib/x86_64-linux-gnu)

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

Se você estiver usando um manuscrito, Makefilevocê pode simplesmente modificar o comando do compilador/vinculador como este. Caso contrário, você terá que alterar seu sistema de compilação para incluí-lo.

informação relacionada