1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

fatal error: 'LAPACKE_H_PATH-NOTFOUND/lapacke.h' file not found: opencv 3.2.0 のビルドにコケる on osx 10.12

Last updated at Posted at 2017-01-08

3.2.0がリリースされてすぐにビルドしようとして失敗して、しばらく放置していたのですが、気が向いて再トライしました。今のところ二つ解決方法を見つけたので、書いておきます。

まとめ

  • macOSだと(おそらく)システムのOpenBLAS (/opt/OpenBLAS) を使う設定になっていると思うので、brew でいれた OpenBLAS1 (/usr/local/opt/OpenBLAS) を使うように変更する(詳細後述)
  • cmakeで -DWITH_LAPACK=OFF オプションを追加する(根本的な解決にはなっていないが、エラーは消える)

問題

% make -j4
...
[ 42%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/matmul.cpp.o
In file included from /Users/ryuyamamoto/cv/opencv/modules/core/src/hal_internal.cpp:49:
In file included from /Users/ryuyamamoto/cv/opencv/build/opencv_lapack.h:1:
In file included from /opt/OpenBLAS/include/cblas.h:5:
/opt/OpenBLAS/include/openblas_config.h:100:43: warning: '__STDC_VERSION__' is not defined, evaluates to 0 [-Wundef]
# if (defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \
                                          ^
In file included from /Users/ryuyamamoto/cv/opencv/modules/core/src/hal_internal.cpp:49:
/Users/ryuyamamoto/cv/opencv/build/opencv_lapack.h:2:10: fatal error: 'LAPACKE_H_PATH-NOTFOUND/lapacke.h' file not found
# include "LAPACKE_H_PATH-NOTFOUND/lapacke.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make: *** [all] Error 2

システムにプリインストールされた /opt/OpenBLAS を見にいってコケています。実際、

ls -l /opt/OpenBLAS/include/                                                                           (git)-[3.2.0]
total 200
-rw-r--r--  1 ryuyamamoto  1000  44433 11  7  2014 cblas.h
-rw-r--r--  1 ryuyamamoto  1000  46918 11  7  2014 f77blas.h
-rw-r--r--  1 ryuyamamoto  1000   4632 11  7  2014 openblas_config.h

lapacke.h は存在していません。brew で入れた OpenBLASはどうかなぁと思って調べてみると、lapacke.h は存在いしているので、そちらを使うようにビルドオプションを変更すれば良さそうです。

% ls -l /usr/local/opt/openblas/include/                                                                 (git)-[3.2.0]
total 2544
-rw-r--r--  1 ryuyamamoto  admin    45648 12 30 21:11 cblas.h
-rw-r--r--  1 ryuyamamoto  admin    47356 12 30 21:11 f77blas.h
-rw-r--r--  1 ryuyamamoto  admin  1144601  4 13  2016 lapacke.h
-rw-r--r--  1 ryuyamamoto  admin     4388  4 13  2016 lapacke_config.h
-rw-r--r--  1 ryuyamamoto  admin      474  4 13  2016 lapacke_mangling.h
-rw-r--r--  1 ryuyamamoto  admin    33161  4 13  2016 lapacke_utils.h
-rw-r--r--  1 ryuyamamoto  admin     4680 12 30 21:11 openblas_config.h

解決方法

brewでいれたOpenBLASを見つけるように cmake/OpenCVFindOpenBLAS.cmake を修正します。

diff --git a/cmake/OpenCVFindOpenBLAS.cmake b/cmake/OpenCVFindOpenBLAS.cmake
index 60594de..19a9165 100644
--- a/cmake/OpenCVFindOpenBLAS.cmake
+++ b/cmake/OpenCVFindOpenBLAS.cmake
@@ -50,6 +50,7 @@ SET(Open_BLAS_INCLUDE_SEARCH_PATHS
   /usr/local/include
   /usr/local/include/openblas
   /usr/local/include/openblas-base
+  /usr/local/opt/openblas/include
   /opt/OpenBLAS/include
   $ENV{OpenBLAS_HOME}
   $ENV{OpenBLAS_HOME}/include
@@ -64,6 +65,7 @@ SET(Open_BLAS_LIB_SEARCH_PATHS
         /usr/lib64
         /usr/local/lib
         /usr/local/lib64
+        /usr/local/opt/openblas/lib
         /opt/OpenBLAS/lib
         $ENV{OpenBLAS}cd
         $ENV{OpenBLAS}/lib

これで、ビルドが通るようになりました。めでたし。

OpenCVFindOpenBLAS.cmake をいじらずに、適当な変数をoverrideする方がいいと思うのですが(-D_OPENBLAS_PATH=/usr/local/opt/OpenBLAS的な)、いまいちやり方がわからずズルをしました。

あと、最初に書きましたが、-DWITH_LAPACK=OFF とすれば、エラー事態は回避できます。ただし、パフォーマンスは落ちると思います。

参考

ビルドコマンド

参考までに、僕が使っているビルドオプションを貼っておきます。

% CC=/usr/local/bin/clang CXX=/usr/local/bin/clang++ cmake -DBUILD_TIFF=ON \
-DBUILD_opencv_java=OFF \
-DWITH_CUDA=OFF \
-DENABLE_AVX=ON \
-DWITH_OPENGL=ON \
-DWITH_OPENCL=OFF \
-DWITH_IPP=ON \
-DWITH_TBB=ON \
-DWITH_EIGEN=ON \
-DWITH_V4L=ON \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DCMAKE_BUILD_TYPE=RELEASE \
-DBUILD_opencv_viz=OFF \
-DCMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -DPYTHON_EXECUTABLE=$(which python) \
-DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-DPYTHON_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
-DWITH_OPENMP=ON \
-DWITH_QT=ON \
-DWITH_VTK=OFF \
-DWITH_LAPACK=ON ..
  1. 現在のバージョンは 0.2.18_2

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?