У меня проблема с платформой Nvidia OpenCl / Cuda, но я думаю, что это 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 не может найти включенный заголовок .
Но возиться с заголовочными файлами фреймворка - не лучший вариант? Как правильно решить эту проблему?