完全禁用 OpenCV 中的 OpenCL

Disable OpenCL in OpenCV completely

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

cmake -D WITH_OPENCL=OFF -D BUILD_SHARED_LIBS=OFF

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

-- Use OpenCL: NO

如果我理解正确的话,这意味着 OpenCL 被禁用了。

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

[Redacted]/lib/libopencv_core.a(ocl.cpp.o): In function `initOpenCLAndLoad': ocl.cpp:(.text.initOpenCLAndLoad+0x2b): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

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

谢谢你,并致以最诚挚的问候

OpenCV 不太擅长记录其构建选项,但我们可以从他们的 CMakeLists.txt:

中很好地看到它们

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

我建议同时关闭 WITH_OPENCLAMDFFTWITH_OPENCLAMDBLASWITH_VA_INTEL