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
在/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(根据交叉编译器的位置修改)
# library (.a) file creation command
AR= ar rc 该成 AR=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-ar rc (同上)
# 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 (同上
在/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目录下文件:
include目录下文件:
lib目录下文件:
/man/man1目录下文件:
检测/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的安装目录。
执行完以上操作后执行以下命令检查库文件是否已正确安装:
$ arm-linux-gcc -print-file-name=libjpeg.so
如果输出为"libjpeg.so"的路径,说明安装正确,否则,安装不正确。
至此libjpeg交叉编译完成。
2、交叉编译 x264,xvid,ffmpeg
为了使OpenCV能处理视频,要事先交叉编译ffmpeg,而ffmpeg又是依赖x264和xvid的。
这里暂时用不到