0. 序言
- PC操作系统:Ubuntu 16.04
- OpenCv版本:4.0
- 交叉工具链:arm-linux-gnueabihf,gcc version 5.4.0
- 目标平台:FriendlyARM
- 编译时间:20181211
1. 下载OpenCv
地址:https://github.com/opencv/opencv 推荐下载最新版本
为何编译:OpenCv并没有提供应用程序安装包,比如像Android下的apk,Windows下的exe,它只提供了源码工程,需要我们编译以后,去执行它的入口代码函数。
编译目的:OpenCv是因为它里面有很多的库,这些库封装了我们想要实现的功能。
2. 下载交叉编译的ARM库
编译在PC linux X86平台,编译运行的目标平台是ARM平台,这时候就需要下载ARM库所需要的文件资料,相当于Android开发的NDK或SDK。目的就是在PC Ubuntu上编译出来的OpenCv可以顺利跑在ARM平台。
① 安装arm-linux-gcc:
sudo apt-get install gcc-arm-linux-gnueabihf
② 安装arm-linux-g++:
sudo apt-get install g++-arm-linux-gnueabihf
③ 检测是否安装成功:
终端进入/usr/bin,输入以下命令,出现gcc版本信息,表示安装成功:
arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabihf/5/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-armhf-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-armhf-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-armhf-cross --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libgcj --enable-objc-gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabihf --program-prefix=arm-linux-gnueabihf- --includedir=/usr/arm-linux-gnueabihf/include
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)
3. 新建build目录
mkdir build
说明:用于存放编译好的配置文件等信息
4. 配置工具链
① 终端输入以下命令
cmake-gui
说明:如果找不到命令,按照提示安装命令即可。
② 输入上述命令后弹出工具链配置界面
说明:Where is the source code对应opencv的文件夹,Where to build the binaries对应opencv存放编译好的配置文件等信息的文件夹(刚才创建的build文件夹)
③ 点击Configure,弹出编译方式选择对话框
说明:选择第四项,交叉编译。
④ 点击Next
说明:Operating System 输入Linux ;Processor 输入 arm ;C 输入arm-linux-gnueabihf-gcc路径:/usr/bin/arm-linux-gnueabihf-gcc;C++路径:/usr/bin/arm-linux-gnueabihf-g++;Target Root输入:/usr/arm-linux-gnueabihf/lib
⑤ 点击Finish
⑥ Search位置输入Z,把zip库选中(Ubuntu 16.04 不选择会报错)
BUILD_ZLIB
⑦ Search位置输入install,修改下opencv编译后存放的目录路径
CMAKE_INSTALL_PREFIX
说明:这里随便选择一个空的目录即可。
/home/ruzhi/fukaq
⑧ 点击Configure
Configuring done
⑨ 点击Generate
Generating done
说明:这个时候就可以关闭对话框了
5. 编译项目
进入build目录,执行编译
make -j8
[100%] Built target opencv_test_gapi
make install
-- Set runtime path of "/home/ruzhi/fukaq/bin/opencv_version" to "/home/ruzhi/fukaq/lib"
说明:存放编译后的opencv执行文件的目录出现文件表示编译完成。
6. 后续
如果大家喜欢这篇文章,欢迎点赞!
如果想看更多 OpenCv或嵌入式开发 方面的技术,欢迎关注!