【问题标题】:Header files linked to from header file not found.未找到从头文件链接到的头文件。
【发布时间】:2010-09-08 11:24:54
【问题描述】:

我对 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 Can't Find a Included Header.

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

【问题讨论】:

    标签: c gcc linker header-files


    【解决方案1】:

    您同时使用#include "" 表单和#include ,它们不会在相同的路径中搜索。 "" 是你的项目本地的,而-i 命令行指定给gcc, 是-I 指定给gcc 的'system' 路径。

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

    【讨论】:

    • 所以我添加了-I../OpenCL/common/inc/CL/,但我仍然收到错误:.../OpenCL/common/inc/CL/cl.h: No such file or directory
    • 由于路径已经在#include 中,你应该将路径传递给-I之前../OpenCL/etc,而不是之后。
    • 您好 jv42,感谢您的提示:我尝试了 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: No such file or directory。我想,我忽略了一些愚蠢的事情。
    • 您确定包含路径吗?不要忘记它在 NV 代码中以“..”开头...
    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多