OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)

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。

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第1张图片

/work/systems/OpenCV-2.0.0/为OpenCV的安装包目录

/work/systems/OpenCVARM/用于生成Makefile的存储。

然后点击Configure按钮,选择为Unix Makefiles,选择Specify options for cross-compiling,点击Next

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第2张图片

配置交叉编译器

配置前

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第3张图片

配置后

之前arm-linux-gcc-4.3.2被安装到了/usr/local/arm/4.3.2/bin目录下。

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第4张图片

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第5张图片

然后点击Generate按钮生成Makefile;

4、编译

(1)进入之前Makefile的目录,即之前配置的/work/systems/OpenCVARM目录

(2)编译:cd  /work/systems/OpenCVARM

      编译命令:$sudo  make


第一个报错

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第6张图片

错误: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。


然后继续编译,报第二错误。

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第7张图片

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第8张图片

错误: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%,报第三个错误。

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第9张图片

解决方法:修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread  -lrt,

重新编译,

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第10张图片


(3)执行$sudo  make install。将opencv生成的库和头文件(在 /work/systems/OpenCVARM/lib下),如图所示

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第11张图片

libcvaux.so、libcv.so 、libcxcore.so、  libcxts.so 、 libhighgui.so 、 libml.so

查看生成的库是否是arm库,可以通过file libcv.so 命令查看

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第12张图片


将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的安装目录。

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第13张图片

OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)_第14张图片

5、在OpenCV应用程序往开发板上移植时,需要把这5个 .so 库文件拷贝到ARM板系统中的 /lib 目录下面。

你可能感兴趣的:(嵌入式开发(学习笔记),项目)