NVIDIA官方提供的OpenCL实例在Ubuntu14.04编译遇到的问题
问题1:提示shared 文件夹,没有Makefile 文件
解决办法:
将OpenCL/common/下的Makefile copy 过来并修改。
CCFILES := oclUtils.cpp
SRCDIR := src/
STATIC_LIB := liboclUtil.a
ROOTDIR := ../../
include ../common/common_opencl.mk
修改为:
CCFILES := cmd_arg_reader.cpp shrUtils.cpp
SRCDIR := src/
STATIC_LIB := libshrutil.a
ROOTDIR := ../
include ../OpenCL/common/common_opencl.mk
问题2:提示找不到exception.h 文件
如果已经下载”NVIDIA_CUDA-7.5_Samples“,将 NVIDIA_CUDA-7.5_Samples/common/inc 目录下的次文件copy 到 common 下的 inc 目录下。
如果没有加下再,可以使用locate 命令收索,如果能找到,copy到common/inc 目录下,此方法没有实验过,猜测可行。
问题3: 提示找不到GLEW 库:”找不到 -lGLEW_x86_64“,原因时Ubuntu14.04 的lib库中路径和编译Makefile 文件中指定的OpenGL库路径不一样,或者系统中没有a安装OpenGL 库。
解决办法:先安装 openGL 库.
sudo apt-get install libglew-dbg libglew-dev libglew1.10 libglewmx-dbg libglewmx-dev libglewmx1.10 glew-utils ros-indigo-qglv-toolkit
然后打开OpenCL/common 路径下的 common_opencl.mk 文件,修改
OPENGLLIB := -lGL -lGLU -lX11 -lXmu
ifeq "$(strip $(HP_64))" ""
OPENGLLIB += -lGLEW -L/usr/X11R6/lib
else
OPENGLLIB += -lGLEW_x86_64 -L/usr/X11R6/lib64
endif
为
OPENGLLIB := -lGL -lGLU -lXmu -lglut
ifeq "$(strip $(HP_64))" ""
OPENGLLIB += -lGLEW -L/usr/X11R6/lib
else
OPENGLLIB += -lGLEW -L/usr/lib/x86_64-linux-gnu
endif
如果是32 位的ubuntu 的系统,请修改 OPENGLLIB += -lGLEW -L/usr/X11R6/lib 这行。
下面是编译 SimpleTexture3D 效果: