通过“easy_install”安装PyOpenCL时找不到包含文件。

2 投票
1 回答
4729 浏览
提问于 2025-04-16 19:34

我下载了nVidia的CUDA库,并把它放在默认的位置:

/usr/local/cuda

当我尝试运行这个:

sudo easy_install pyopencl

它给我报了这个错:

In file included from src/wrapper/wrap_cl.cpp:1:0:
src/wrapper/wrap_cl.hpp:20:19: fatal error: CL/cl.h: No such file or directory

不过,我可以确认上面的文件确实存在,还有其他几个头文件也在:

/usr/local/cuda/include/CL/cl.h

我甚至试着设置了LD_LIBRATH_PATH:

export LD_LIBRARY_PATH=/usr/local/cuda/lib

但似乎没有什么效果。

任何帮助都非常感谢!

1 个回答

3

你的编译器的包含路径可能没有包括 /usr/local/cuda/include/ 这个目录。环境变量 LD_LIBRARY_PATH 实际上是用来告诉编译器或运行环境在哪里可以找到共享库文件的。解决这个问题有两种方法(我知道的):

1) 大多数编译器都接受一个参数,可以用来指定额外的包含路径;对于 gcc 编译器,这个参数是 -I,所以

gcc -I /usr/local/cuda/include [code files, more options, etc]

这条命令会告诉 gcc 除了系统的包含路径外,还要在 /usr/local/cuda/include 这个目录下查找需要的文件。

2) 将 OpenCL 的头文件链接到你的系统包含路径中(通常是 /usr/include/)。可以这样做:

# ln -s /usr/local/cuda/include/CL CL

在 /usr/include 目录下执行这条命令应该可以解决问题。

如果在解决了这个问题后,你遇到了类似下面的问题:

/usr/bin/ld: cannot find -lOpenCL

那么你可能需要查看 这个问题

撰写回答