OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)
Linux系统:Ubuntu9.10
交叉编译器:arm-linux-gcc-4.3.2(已安装)
OpenCV:OpenCV-2.0.0.tar.bz2(OpenCV for Linux/Mac)
CMake:cmake-2.8.12-Linux-i386.tar.gz
1、OpenCV解压
将OpenCV-2.0.0.tar.bz2放到/work/systems/下。
解压命令: tar -jxvf OpenCV-2.0.0.tar.bz2
2、CMake解压:
将cmake-2.8.12-Linux-i386.tar.gz放到/work/tools/目录下
解压命令 :tar -zxvf cmake-2.8.12-Linux-i386.tar.gz
解压后文件夹中
配置环境变量:修改配置文件:sudo vim /etc/environment
在原来的环境变量PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
:/usr/local/arm/4.3.2/bin/"中添加cmake所在目录/work/tools/cmake-2.8.12-Linux-i386/bin/
使生效:source /etc/environment
3、CMake编译opencv
通过cmake-gui命令启动cmake。
/work/systems/OpenCV-2.0.0/为OpenCV的安装包目录
/work/systems/OpenCVARM/用于生成Makefile的存储。
然后点击Configure按钮,选择为Unix Makefiles,选择Specify options for cross-compiling,点击Next
配置交叉编译器
配置前
配置后
之前arm-linux-gcc-4.3.2被安装到了/usr/local/arm/4.3.2/bin目录下。
然后点击Generate按钮生成Makefile;
4、编译
(1)进入之前Makefile的目录,即之前配置的/work/systems/OpenCVARM目录。
(2)编译:cd /work/systems/OpenCVARM
编译命令:$sudo make
第一个报错
错误:exec:arm-none-linux-gnueabi-gcc:not found
解决方法:将CMake-gui中C(Compilers)/usr/local/arm/4.3.2/bin/arm/arm-linux-gcc
改为/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc,
继续执行$ sudo make。
然后继续编译,报第二错误。
错误:exec:arm-none-linux-gnueabi-g++:not found
解决方法:
将CMake-gui中C(Compilers)/usr/local/arm/4.3.2/bin/arm/arm-linux-gcc
改为/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc,
C++(Compilers)/usr/local/arm/4.3.2/bin/arm/arm-linux-g++
改为/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++,
然后执行sudo make,则可以进行编译。
编译到87%,报第三个错误。
解决方法:修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,
重新编译,
(3)执行$sudo make install。将opencv生成的库和头文件(在 /work/systems/OpenCVARM/lib下),如图所示
libcvaux.so、libcv.so 、libcxcore.so、 libcxts.so 、 libhighgui.so 、 libml.so
查看生成的库是否是arm库,可以通过file libcv.so 命令查看
将opencv生成的库( /work/systems/OpenCVARM/lib下)安装到目录/usr/local/arm/4.3.2/arm-none-linux-gnueabi/lib目录下。
将opencv的头文件拷贝到/usr/local/arm/4.3.2/arm-none-linux-gnueabi/include目录下。
其中,/usr/local/arm/4.3.2目录是arm-linux-gcc-4.3.2的安装目录。
5、在OpenCV应用程序往开发板上移植时,需要把这5个 .so 库文件拷贝到ARM板系统中的 /lib 目录下面。