本文主要是介绍OPENCV2.3的交叉编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Opencv的嵌入式移植:
Opencv使用cmake作为生成makefile的工具。下面学习一下cmake相关的部分。
Cmake像这样定义一个宏定义:
SET(macronamemacarovalue)
有几个宏定义,是交叉编译时必须要定义的,例子:
#this one is important
SET(CMAKE_SYSTEM_NAMELinux)
#thisone not so much
SET(CMAKE_SYSTEM_VERSION1)
#specify the cross compiler
SET(CMAKE_C_COMPILER /home/zzg/CodeSourcery/Sourcery_G++_Lite/bin/arm-linux-gcc)
SET(CMAKE_CXX_COMPILER/home/zzg/CodeSourcery/Sourcery_G++_Lite/bin/arm-linux-g++)
#where is the target environment
SET(CMAKE_FIND_ROOT_PATH/home/zzg/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/libc)
SET(CMAKE_LIBRARY_PATH /home/zzg/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/libc/lib)
#search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAMNEVER)
#for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARYONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDEONLY)
其中:
CMAKE_SYSTEM_NAME 指明目标操作系统类型,交叉编译的时候一般为Linux。
CMAKE_SYSTEM_VERSION指明本次编译生成的版本,可选。
CMAKE_C_COMPILER 指明你用于交叉编译的C编译器
CMAKE_CXX_COMPILER指明你用于交叉编译的C++编译器
CMAKE_FIND_ROOT_PATH指明你的交叉编译链的根路径。在这个根路径下应该有个lib文件夹保存这用于交叉编译的库文件。
其他的宏定义保持不变即可。
你可以将上述的宏定义写为一个交叉编译配置文件,例如arm.cmake,然后在命令行调用cmake指令的时候,-DCMAKE_TOOLCHAIN_FILE 指明这个交叉编译配置文件,例如:
cmake-D CMAKE_TOOLCHAIN_FILE ~/arm.cmake ../
更简单的方法,可以使用cmake-gui工具:
指明源码路径和目标文件夹路径。然后点击“Configure”,弹出窗口:
选择第三项:
specifytoolchain file for cross-compiling
选择你写的交叉编译配置文件即可。
然后修改出现的各种宏配置。最后点击generate,生成makefile,万事大吉了~
这篇关于OPENCV2.3的交叉编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!