环境准备:
ubuntu18(64位)
opencv3.3.0.tar
arm-linux-gnueabi5.4.0.tar
交叉编译opencv
1、解压opencv3.3.0到指定目录下(如opencv3.3.0)
unzip opencv3.3.0zip
2、新建目录build并进入
mkdir build
chmod -R 777 build
cd build
3、安装cmake-qt-gui,进入到build目录,并运行
sudo apt-get install cmake-qt-gui
cmake-gui
选择源文件路径和安装路径,
之后点击configure
Next
然后选择交叉编译路径,点击finish
之后增加选项:
BUILD_ZLIB
BUILD_JPEG
BUILD_PNG
BUILD_opencv_world
OPENCV_ENABLE_NONFREE
取消选项:
WITH_CUDA
WITH_GTK
WITH_FFMPEG
WITH_1394
WITH_GSTREAMER
WITH_TIFF
WITH_OPENEXR
WITH_OPENCL
BUILD_opencv_freetype
WITH_LIBV4L
以上选项根据版本有所不同,没有的选项可以忽略。
然后可以修改安装路径
最后点击Configure之后再点击Generate(此步一定要联网)
完成之后就可以退出cmake-gui。
4、修改CMakeCache.txt
在CMAKE_EXE_LINKER_FLAGS:STRING= 之后添加
-lpthread -lrt -ldl
5、然后保存退出
执行
sudo make -j4
6、很大概率会报错
modules/core/CMakeFiles/opencv_core.dir/build.make:2307: recipe for target ‘lib/libopencv_core.so.3.4.1’ failed
make[2]: *** [lib/libopencv_core.so.3.4.1] Error 1
make[2]: *** Deleting file ‘lib/libopencv_core.so.3.4.1’
CMakeFiles/Makefile2:1521: recipe for target ‘modules/core/CMakeFiles/opencv_core.dir/all’ failed
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:160: recipe for target ‘all’ failed
make: *** [all] Error
版本问题(64位Ubuntu)
解决方案:
1、先把BUILD_opencv_world选项去掉试试看,重新编译,还是不行
2、进入opencv3.3.0/build/3rdparty(第三步开头选择的)目录下,先找该路径中有哪些目录下有flags.make
cd build/3rdparty
find -name flags.make
如:/zlib/CMakeFles/zlib.dir/flags.make
将这些目录下所有的flags.make
3、修改
C_FLAGS = -W -Wall
为
C_FLAGS = -O3 -fPIC -W -Wall
用来支持在64位机上编译
4、最后重新编译:
sudo make -j4
应该就没问题了
5、安装:
sudo make install
安装完成之后所有编译好的库文件都在/opt/opencv3.3.0/lib(自己修改的安装路径)。