1. 准备工作
电脑环境是Ubuntu 16.04
下载opencv源码并解压缩,这边用的是opencv-4.1.1,
交叉编译环境配置,我配置的是armeabihf-linux-gnu
cmake-gui的安装:
sudo apt-get install cmake-qt-gui
2. cmake-gui配置
Terminal打开cmake-gui,并配置源码路径和编译路径,然后点击Configure
在弹出的CMakeSetup中选择Sepcify options for cross-compiling
配置gcc和g++以及target root(交叉编译的bin目录),点击Finish
Advanced打勾,这样可以看到隐藏的属性,配置下CMAKE_INSTALL_PREFIX,这里是在源码目录下创建了个install文件夹。
CMAKE_BUILD_TYPE这里配的是Release
如果出现CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. 就是需要配置下CMAKE_MAKE_PROGRAM,一般是/usr/bin/make,配置完后再点击Configure.
WITH_TIFF去掉打勾
如果出现ZLIB相关报错,这里把WITH_ZLIB打勾
CMAKE_CXX_FLAGS_RELEASE 添加 -fpermissive
CMAKE_EXE_LINKER_FLAGS 添加 -lpthread -lrt
然后为了编译快点,我只选择自己想要的库
在Build选项中,我去掉了TESTS和用不到的库,只保留了core / highgui / imgcodecs / imgproc / video / videoio等,其他打勾都去掉了
最后再点击下Configure,之后点击Generate,接着就可以开始编译了。
3. 编译opencv
terminal进入到opencv下的build目录。
出现上面这个错误,需要修改源码 3rdparty/protobuf/src/google/protobuf/stubs/common.cc
继续make,成功后再make install,需要的库就都在install目录下了