参考几篇博客
1.交叉编译opencv2.31与移植至arm9:
http://blog.csdn.net/embeddedman/article/details/7416934
2.编译OpenCV:
http://blog.lehu.shu.edu.cn/byman/A264747.html
3.交叉编译OpenCV2.3.1:
http://my.oschina.net/elinuxer/blog/11887
4.http://wenku.baidu.com/link?url=mlFQKW8SlxB-WedCScEKjAw5d9WHBp-EBYB-5MvYI7GAcA_81zmaA2eopZ380wykS8J5ZI0kgu1QaSOfk_HrxxD8Uov2Y0pk9AsL_pbOWAa
5.http://blog.sina.com.cn/s/blog_92942dba0101d1wj.html
6.http://www.360doc.com/content/15/0210/16/5268588_447722872.shtml
7.http://wenku.baidu.com/link?url=xE6PCnw_4stAcDWafKUa_Qq5A56Cvh5_n3Alfsrqy4VAogoaFOO6YNKIYyHQ32euWqcJSB_nrHbRmt1Z-Y7uI0VwETV1JmZZ8VZwgTtI_oa
需要注意的点:
首先你已经安装了交叉编译工具链,比如说自己安装了gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux工具
然后cmake用的是cmake-3.4.1-Linux-i386.tar.gz版本,其实这个只需在linux中解压即可,需要用cmake-gui时,只需到bin目录下,
sudo ./cmake-gui
即可打开cmake-gui之后,选择要编译的源文件和编译之后存放的路径
然后配置编译工具
这里的2.4.10
是OpenCV的版本号;(不过后来感觉这里应该填目标机,即arm的Linux版本号)
(一说Processor这里可以填上arm
)上面这两个括号中的内容都没有验证^-^
Compilers选项下的C和C++分别对应安装的gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux路径下的arm-linux-gnueabihf-gcc
和arm-linux-gnueabihf-g++
(在bin目录中)
Target Root选项为gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux的安装目录,不用带/bin
- 点击finish之后会出现第一次Configure的结果,可能出现各种错误,比如说
ERROR in configuration process,project files may be invalid
这个错误可以无视掉,直接点击OK - 然后就是修改红色区域的部分值,去掉某些值: WITH_OPENCL、WITH_TIFF 、BUILD_OPENEXR、WITH_OPENEXR、WITH_CUDA
并修改CMAKE_INSTALL_PREFIX的值为自己想要的路径,这里我设置为了/usr/local/opencv-arm/
- (不知道这步在这里是否是必须的)然后打开/home/sun/opencv-arm-linux目录下的CMakeCache.txt文件修改里边的两个值:
CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt -ldl
CMAKE_INSTALL_PREFIX:PATH= XXXXXX(安装路径) 见上 - 点击Configure,如果没错,只是有一些红色部分,不用管这些,直接点击 Generate即可
- 生成CMakefile之后,还要修改一波CMakeCache.txt
打开/home/sun/opencv-arm-linux目录下的CMakeCache.txt文件
如果CMAKE_EXE_LINKER_FLAGS为空,加上-lpthread -lrt -ldl
如果CMAKE_INSTALL_PREFIX:PATH为空,添加上相应的路径,见上 - 然后就可以执行
sudo make
,注意这里要在编译生成文件目录下操作,这里我的路径为/home/sun/opencv-arm-linux
- 最后
sudo make install
配置编译环境
这里先做一个说明:
我的编译文件存放目录:/home/sun/opencv-arm-linux
编译生成的头文件存放目录:(即CMAKE_INSTALL_PREFIX的值)/usr/local/opencv-arm
首先,你可以打开
/usr/local/opencv-arm/lib/pkgconfig
目录下的opencv.pc文件,看一下里边的参数
然后编辑库连接配置文件
cd /etc/ld.so.conf.d
vim opencv.conf
添加如下内容: /usr/local/opencv-arm/lib
然后 ldconfig
使生效
- 添加环境变量
vim /etc/bash.bashrc #如果是centos系统,直接vim /etc/bashrc即可
在最后添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-arm/lib/pkgconfig
export PKG_CONFIG_PATH
保存之后,执行source /etc/bash.bashrc
使之生效。
至此,环境配置完成。
下面进行编译测试
编译测试
假如你已经有一个main.cpp函数文件了,进入其 所在的文件夹
执行下面的命令进行编译:
arm-linux-gnueabihf-g++ main.cpp -o hh -lpthread -lrt `pkg-config --libs --cflags opencv`
其中arm-linux-gnueabihf-g++
是编译用的编译器;main.cpp
为要进行编译的程序;hh
为编译之后生成的可执行二进制程序,可以任意命名
编译成功之后,就会发现生成了一个名为hh
的二进制文件。
至此,在电脑上的OpenCV交叉编译已全部完成!!
剩下的工作就是把编译好的OpenCV库拷到ARM平台中,可以参考 将交叉编译好的OpenCV移植到ARM平台