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

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

1、交叉编译libjpeg
为了使OpenCV能处理jpeg图像,我们必须事先交叉编译好libjpeg这里使用的版本是jpegsrc.v6b。
下载地址:https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/
这里使用的安装包:jpegsrc.v6b.tar.gz。

(1)解压、配置
jpegsrc.v6b.tar.gz放在/work/system/目录下.
解压:$tar  –zvxf  jpegsrc.v6b.tar.gz 
进入目录:$cd   jpeg-6b 

OpenCV2.0.0移植到ARM9(二)(JZ2440----S3c2440)_第1张图片
在/work/system/目录下新建一个libjpeg-arm目录,命令为:$sudo mkdir libjpeg-arm
清除命令:$sudo make distclean
配置:$./configure --prefix=/work/system/libjpeg-arm --exec-prefix=/work/system/libjpeg-arm --enable-shared --enable-static

--prefix=/work/libjpeg-arm : 执行make install 后,会将与体系无关的文件拷贝到此目录下.
--exec-prefix=/work/libjpeg-arm : 执行make install 后,会将与体系无关的文件拷贝到此目录下,即将一些可执行程序、动态链接库和静态链接库拷贝到此目录的相应目录下
--enable-shared : 用GNU libtool 编译成动态链接库.

(2)修改生成的Makefile文件:
修改/work/system/jpeg-6b目录中的Makefile文件。
 # The name of your C compiler:
       CC= gcc   该成 CC= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc(根据交叉编译器的位置修改)
OpenCV2.0.0移植到ARM9(二)(JZ2440----S3c2440)_第2张图片       
# library (.a) file creation command
       AR= ar rc  该成 AR=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-ar rc  (同上)
OpenCV2.0.0移植到ARM9(二)(JZ2440----S3c2440)_第3张图片
 # second step in .a creation (use "touch" if not needed)
       AR2= ranlib  该成 AR2= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-ranlib (同上
OpenCV2.0.0移植到ARM9(二)(JZ2440----S3c2440)_第4张图片

在/work/system/libjpeg-arm/目录下新建man/man1,include,lib,bin四个目录,然后执行make命令
	$sudo mkdir man
	$cd man
	$sudo mkdir man1
	$sudo mkdir lib
	$sudo mkdir bin
在/work/system/jpeg-6b/目录下执行以下命令:
	$sudo make
	$sudo make install 

执行后,可以看到/work/system/libjpeg-arm/各文件夹中的内容。

bin目录下文件:

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

include目录下文件:

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

lib目录下文件:

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

/man/man1目录下文件:

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

检测/work/system/libjpeg-arm/lib/目录下生成的库是否为arm版,执行命令:$file libjpeg.so.62.0.0



(3)文件拷贝

  •  将/work/system/libjpeg-arm/include/中(jconfig.h, jerror.h, jmorecfg.h, jpeglib.h)四个头文件拷贝到:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/include中。
执行命令:$sudo cp jconfig.h jerror.h jmorecfg.h jpeglib.h   /usr/local/arm/4.3.2/arm-none-linux-gnueabi/include
  •    将/work/system/libjpeg-arm/lib中(libjpeg.la, libjpeg.so, libjpeg.so.62, libjpeg.so.62.0.0)四个库文件拷贝到:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/lib中

执行命令:$sudo cp libjpeg.la  libjpeg.so libjpeg.so.62  libjpeg.so.62.0.0   /usr/local/arm/4.3.2/arm-none-linux-gnueabi/lib

其中,/usr/local/arm/4.3.2/目录是交叉编译器arm-linux-gcc-4.3.2的安装目录。

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

执行完以上操作后执行以下命令检查库文件是否已正确安装:
$ arm-linux-gcc -print-file-name=libjpeg.so 
如果输出为"libjpeg.so"的路径,说明安装正确,否则,安装不正确。


至此libjpeg交叉编译完成。


2、交叉编译 x264,xvid,ffmpeg
    为了使OpenCV能处理视频,要事先交叉编译ffmpeg,而ffmpeg又是依赖x264和xvid的。

这里暂时用不到

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