OpenCV 3.2.0编译报错:无法找到LAPACKE头文件
先把你遇到的错误贴出来,方便定位问题:
将编译OpenCV 3.2.0时出现如下错误:
从/home/lucas/OpenCV/opencv-3.2.0/modules/core/src/hal_internal.cpp:49:0引入文件时:
/home/lucas/OpenCV/build/opencv_lapack.h:2:45: 致命错误:LAPACKE_H_PATH-NOTFOUND/lapacke.h:没有该文件或目录
编译终止。
modules/core/CMakeFiles/opencv_core.dir/build.make:906: 目标'modules/core/CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o'的构建规则失败
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o] 错误 1
CMakeFiles/Makefile2:1945: 构建规则...
这个问题本质是CMake配置OpenCV时,没能正确定位LAPACKE的头文件路径,导致生成的配置文件里用占位符代替了真实路径,下面是具体解决步骤:
第一步:安装LAPACKE依赖包
先确保系统里装了LAPACKE的开发包,不同系统命令不同:- Debian/Ubuntu系:
sudo apt-get install liblapacke-dev libopenblas-dev - CentOS/RHEL系:
sudo yum install lapacke-devel openblas-devel
- Debian/Ubuntu系:
第二步:重新配置CMake
进入你的OpenCV构建目录(即/home/lucas/OpenCV/build),先清理旧的缓存文件避免干扰:cd /home/lucas/OpenCV/build rm -rf CMakeCache.txt CMakeFiles/然后手动指定LAPACKE的路径重新运行CMake(路径要根据你系统实际情况调整):
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_LAPACK=ON \ -D LAPACKE_INCLUDE_DIR=/usr/include/lapacke \ -D LAPACKE_LIBRARIES=/usr/lib/x86_64-linux-gnu/liblapacke.so \ ..要是不确定路径,可以用
find /usr -name lapacke.h和find /usr -name liblapacke.so命令查找。第三步:重新编译
配置完成后,重新执行编译命令,用-j$(nproc)可以利用所有CPU核心加速:make -j$(nproc)
内容的提问来源于stack exchange,提问作者sproulel

