2010-09-08 1 views
4

У меня проблема с инфраструктурой OpenCl/Cuda от Nvidia, но я думаю, что это проблема связи gcc.Файлы заголовка, связанные с файлом заголовка, не найдены.

opencl_hello_world.c Пример файла используется следующий файл заголовка:

#include "../OpenCL/common/inc/CL/opencl.h" 

с opencl.h используя эти файлы заголовков:

#include <../OpenCL/common/inc/CL/cl.h> 
#include <../OpenCL/common/inc/CL/cl_gl.h> 
#include <../OpenCL/common/inc/CL/cl_gl_ext.h> 
#include <../OpenCL/common/inc/CL/cl_ext.h> 

Таким образом, все файлы заголовков находятся в той же папке.

Когда я затем компилировать с gcc opencl_hello_world.c -std=c99 -lOpenCL я получаю следующее сообщение об ошибке:

error: ../OpenCL/common/inc/CL/cl.h: No such file or directory 
error: ../OpenCL/common/inc/CL/cl_gl.h: No such file or directory 
... 

Даже если cl.h и другие заголовочные файлы находятся в этой папке.

Обыскав SO, я тогда изменил включает в opencl.h к

#include "cl.h" 
    #include "cl_gl.h" 

как я прочитал здесь: gcc Can't Find a Included Header.

Но возиться с файлами заголовков фреймворков не похоже на путь? Каким будет правильный способ справиться с этой проблемой?

ответ

6

Вы используете форму #include "" и #include <>, которые не выполняют поиск по тем же путям. «" является локальным для вашего проекта, а указанная в командной строке -i gcc, <> является «системным» путем, указанным от -I до gcc.

Возможно, вам нужно установить путь включения с -Ipath/to/includes в командной строке gcc.

+1

поэтому я добавляю '-I ../ OpenCL/common/inc/CL /', но я все еще получаю ошибку: '.../OpenCL/common/inc/CL/cl.h: Нет такого файла или каталога ' – Framester

+0

Поскольку путь уже находится в #include <>, вы должны перейти к -I по пути BEFORE ../OpenCL/etc, а не после. – jv42

+0

Привет, я благодарю вас за tipp: Я пробовал 'gcc opencl_hello_world.c -I/home/myuseraccount/Documents/projects/opencl/NVIDIA_GPU_Computing_SDK -L/usr/local/cuda/lib -lOpenCL', но ошибка по-прежнему : '../OpenCL/common/inc/CL/cl.h: нет такого файла или каталога'. Я думаю, я забыл что-то глупое. – Framester