Por que o OpenCL não faz link com o gcc depois de instalar o driver fglrx e o app sdk?

0

Instalei o driver fglrx em minha máquina seguindo este tutorial: link , instalei o pacote de cabeçalhos opencl e, finalmente, instalado o SDK app amd Quando eu corro

gcc -lOpenCL someprogram.c

Recebo o erro

/usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status

Eu tenho o seguinte do fglrxinfo

display: :0  screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon HD 6310 Graphics
OpenGL version string: 4.2.12422 Compatibility Profile Context 13.152

E não há libopencl.so em / usr / lib64 /

Eu descobri como vinculá-lo executando

gcc -I/opt/AMDAPP/include -L/opt/AMDAPP/lib/x86_64 -lOpenCL hellocl.c -o hello
    
por user1876508 16.10.2013 / 06:25

1 resposta

2

Você precisa da biblioteca real para o link ld . Os cabeçalhos são necessários apenas para a compilação, não para a vinculação. Ele estará procurando por um arquivo chamado libOpenCL.so no caminho da sua biblioteca. Na% man_de% manpage:

   -l namespec
   --library=namespec
       Add the archive or object file specified by namespec to the list of
       files to link.  This option may be used any number of times.  If
       namespec is of the form :filename, ld will search the library path
       for a file called filename, otherwise it will search the library path 
       for a file called libnamespec.a.

       On systems which support shared libraries, ld may also search for 
       files other than libnamespec.a. Specifically, on ELF and SunOS
       systems, ld will search a directory for a library called 
       libnamespec.so before searching for one called libnamespec.a.  
       (By convention, a ".so" extension indicates a shared library.)  
       Note that this behavior does not apply to :filename, which always
       specifies a file called
       filename.

Tente criar links simbólicos para a biblioteca com o nome que o sistema de compilação está procurando.

ln -s /usr/lib64/libopencl.so /usr/lib64/libOpenCL.so
    
por 16.10.2013 / 06:33

Tags