2015-06-09 17 views
8

Chcę zbudować statyczną wersję OpenCV (3) z wyłączonym OpenCL. Aby to zrobić, używamWyłącz OpenCL w OpenCV całkowicie

cmake -D WITH_OPENCL=OFF -D BUILD_SHARED_LIBS=OFF 

podczas kompilacji OpenCV, wśród innych parametrów (które wyłączają inne moduły, że nie potrzebujesz). Wyjście rozmowy cmake zawiera następujący wiersz

- Używaj OpenCL: NIE

które, jeśli rozumiem go poprawnie, oznacza to, że OpenCL jest wyłączone.

Teraz, gdy powiązanie przeciwko skompilowanej wersji OpenCV, pojawia się następujący komunikat (I redacted ścieżkę):

[redacted] /lib/libopencv_core.a (ocl.cpp.o): w funkcji `initOpenCLAndLoad '. ocl.cpp :(text.initOpenCLAndLoad + 0x2b): ostrzeżenie: Używanie 'dlopen' w statycznie połączonych aplikacji wymaga przy starcie współdzielone biblioteki z wersji glibc wykorzystywane do łączenia

I jestem świadomy tego, co oznacza komunikat, ale jestem zdezorientowany jego źródłem - dlaczego w kompilacji jest kod wywołujący OpenCL d biblioteka OpenCV? Czy jest jakaś inna opcja, którą muszę ustawić, aby OpenCL był całkowicie wyłączony?

Dziękuję i pozdrawiam

Odpowiedz

2

OpenCV nie jest bardzo dobra na dokumentowanie jego opcje kompilacji, ale możemy zobaczyć je dość dobrze z ich CMakeLists.txt:

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

Sugerowałbym wyłączając także WITH_OPENCLAMDFFT, WITH_OPENCLAMDBLAS i WITH_VA_INTEL.

+1

Wygląda na to, że uległo to zmianie od czasu opublikowania powyższego problemu (w wersji 3.0.0). W każdym razie, dzięki za wskazanie tego - nie myślałem też o wyłączeniu tych opcji. Mam już nazwy opcji od CMakeLists ze względu na dość słabą dokumentację na nich, ale bardzo trudno jest wywnioskować, jakie zależności są dokładnie bez głębokiego kopania. –