完全禁用OpenCV中的OpenCL

And*_*ger 8 opencv static-libraries opencl opencv3.0

我想在禁用OpenCL的情况下构建静态版本的OpenCV(3).为此,我正在使用

cmake -D WITH_OPENCL=OFF -D BUILD_SHARED_LIBS=OFF
Run Code Online (Sandbox Code Playgroud)

在编译OpenCV时,以及其他参数(禁用我不需要的其他模块).cmake调用的输出包括以下行

- 使用OpenCL:没有

如果我理解正确,则意味着OpenCL被禁用.

现在,当链接到OpenCV的编译版本时,我得到以下消息(我编辑了路径):

[编辑] /lib/libopencv_core.a(ocl.cpp.o):在函数`initOpenCLAndLoad'中:ocl.cpp :(.text.initOpenCLAndLoad + 0x2b):警告:在静态链接的应用程序中使用'dlopen'需要在运行时来自用于链接的glibc版本的共享库

我知道这个消息意味着什么,但我对它的来源感到困惑 - 为什么在编译的OpenCV库中有OpenCL调用代码?是否还需要设置其他选项才能完全禁用OpenCL?

感谢你并致以真诚的问候

Chr*_*ing 5

OpenCV 不太擅长记录其构建选项,但我们可以从其 CMakeLists.txt 中很好地看到它们:

https://github.com/Itseez/opencv/blob/master/CMakeLists.txt#L208

我建议也关闭WITH_OPENCLAMDFFTWITH_OPENCLAMDBLAS、 和WITH_VA_INTEL