通过“easy_install”安装PyOpenCL时找不到包含文件。
我下载了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
那么你可能需要查看 这个问题。