链接到头文件的头文件未找到.

Fra*_*ter 5 c linker gcc header-files

我对Nvidia的OpenCl/Cuda框架有疑问,但我认为这是一个gcc链接问题.

opencl_hello_world.c示例文件使用下面的头文件:

#include "../OpenCL/common/inc/CL/opencl.h"
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

所以所有头文件都在同一个文件夹中.

当我编译时,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
...
Run Code Online (Sandbox Code Playgroud)

即使cl.h和其他头文件位于此文件夹中.

搜索了SO后,我改变了opencl.hto中 的包含

   #include "cl.h"
   #include "cl_gl.h"
Run Code Online (Sandbox Code Playgroud)

我在这里读到:gcc无法找到包含的标题.

但是搞乱框架头文件似乎不怎么样?处理这个问题的正确方法是什么?

jv4*_*v42 7

您正在使用#include""表单和#include <>,它们不会在相同的路径中搜索.""是项目的本地,并且指定给gcc的-i命令行,<>是-I到gcc指定的"系统"路径.

您可能需要在gcc的命令行中使用-Ipath/to/includes设置包含路径.