opencv2.4.2移植到ARM中
2014-06-07 17:42
459 查看
原文地址:opencv2.4.2移植到ARM中作者:elvis
一、编译环境及库文件
linux环境:fedora14
交叉编译:4.5.1
arm板子:tiny6410
libz:
zlib-1.2.7
libjpeg:
jpegsrc.v7
libpng:
libpng-1.5.10
libyasm:
yasm-1.2.0
opencv:
opencv-2.4.2
libx264:
x264-snapshot-20120608-2245
libxvid:
xvidcore-1.3.2
lffmpeg:
ffmpeg-0.10.3
cmake:
cmake-2.8.8-Linux-i386.tar,gz
二、opencv-2.4.1的移植过程
1、libz的交叉编译:
# ./configure
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--shared
修改makefile
CC=arm-linux-gcc
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib
CDSHARED=arm-linux-gcc -shared -wl,
-soname,libz.so.1,--version-script,zl
lib.map
#make
#make install
2、libjpeg的交叉编译:
#./configure --host=arm-linux
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --enable-static
#make install
3、libpng的交叉编译
#./configure --host=arm-linux
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --enable-static
#make
#make install
4、yasm的交叉编译:
#./configure --host=arm-linux
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --enable-static
#make
#make install
5、libx264的交叉编译:
#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux
--disable-asm
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
#make
#make install
6、libxvid的交叉编译:
#cd build/generic
#./configure
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--host=arm-linux --disable-assembly
#make
#make install
7、ffmpeg的交叉编译:
#./configure
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --disable-static --enable-gpl
--enable-cross-compile --arch=arm --disable-stripping
--target-os=linux --enable-libx264 --enable-libxvid
--cc=arm-linux-gcc --enable-swscale
#make
#make install
8.cmake-gui安装
到官网上下载已经编译好的cmake-2.8.8-Linux-i386.tar,gz,解压就可以了
9、opencv2.4.1的交叉编译:
用到的主要目录说明:
交叉编译工具链所在目录
/opt/FriendlyARM/toolschain/4.5.1/
安装opencv的目录 /usr/local/
opencv源码所在目录 /home/6410/opencv/opencv-2.4.2/
编译好的opencv库所在目录 /home/6410/opencv/opencv-2.4.2/build
#mkdir build
#cd build
#cmake-gui
选择源代码目录/home/6410/opencv/opencv-2.4.2/
选择Build目录:/home/6410/opencv/opencv-2.4.2/build
点击Configure,保持generator为Unix Makefiles,选择Specify options for
cross-compiling,点击Next,
Operating System填写arm-linux
C
Compilers填写opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
C++
Compilers填写opt/FriendlyARM/toolschain/4.5.1//bin/arm-linux-g++
程序库的Target Root填写opt/FriendlyARM/toolschain/4.5.1/
然后点击Finish。
默认安装目录为/usr/local,点击Generate生成Makefile。
#make
错误一:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libopencv_core.so: undefined reference to
`clock_gettime'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFerrorHandler'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFrealloc'
../../lib/libopencv_core.so: undefined reference to
`pthread_key_create
解决方法:
修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread
-lrt,重新编译,错误消除
错误二:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFerrorHandler'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFrealloc'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmalloc'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmemcpy'
../../lib/libopencv_highgui.so: undefined reference to
`TIFFOpen'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFfree'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFwarningHandler'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmemcmp'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmemset'
解决方法:修改CMakeCache.txt,WITH_TIFF:BOOL=ON,改成OFF,重新编译,错误消除。
#make install
三、测试
测试程序:
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int main(int argc,char **argv)
{
CvCapture*
capture = NULL;
IplImage*
frame = NULL;
if(!(capture
= cvCaptureFromCAM(-1)))
{
fprintf(stderr, "Can not open camera./n");
return -1;
}
cvNamedWindow("video", 1);
while(frame
= cvQueryFrame( capture ) )
{
cvShowImage("video", frame);
}
cvDestroyWindow("video");
cvReleaseCapture(&capture);
return 0;
}
编译:
#arm-linux-g++ -o opencv_test opencv_test.cpp -I /usr/local/include
-L /usr/local/lib -lopencv_core -lopencv_highgui -lpthread
-lrt
单个opencv的make就花了大概1个半小时,终于成功了,但是这只是开始,要想运用opecv+qt+x264+ffmpeg做东西,这还需要更长远的学习啊
一、编译环境及库文件
linux环境:fedora14
交叉编译:4.5.1
arm板子:tiny6410
libz:
zlib-1.2.7
libjpeg:
jpegsrc.v7
libpng:
libpng-1.5.10
libyasm:
yasm-1.2.0
opencv:
opencv-2.4.2
libx264:
x264-snapshot-20120608-2245
libxvid:
xvidcore-1.3.2
lffmpeg:
ffmpeg-0.10.3
cmake:
cmake-2.8.8-Linux-i386.tar,gz
二、opencv-2.4.1的移植过程
1、libz的交叉编译:
# ./configure
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--shared
修改makefile
CC=arm-linux-gcc
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib
CDSHARED=arm-linux-gcc -shared -wl,
-soname,libz.so.1,--version-script,zl
lib.map
#make
#make install
2、libjpeg的交叉编译:
#./configure --host=arm-linux
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --enable-static
#make install
3、libpng的交叉编译
#./configure --host=arm-linux
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --enable-static
#make
#make install
4、yasm的交叉编译:
#./configure --host=arm-linux
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --enable-static
#make
#make install
5、libx264的交叉编译:
#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux
--disable-asm
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
#make
#make install
6、libxvid的交叉编译:
#cd build/generic
#./configure
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--host=arm-linux --disable-assembly
#make
#make install
7、ffmpeg的交叉编译:
#./configure
--prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
--enable-shared --disable-static --enable-gpl
--enable-cross-compile --arch=arm --disable-stripping
--target-os=linux --enable-libx264 --enable-libxvid
--cc=arm-linux-gcc --enable-swscale
#make
#make install
8.cmake-gui安装
到官网上下载已经编译好的cmake-2.8.8-Linux-i386.tar,gz,解压就可以了
9、opencv2.4.1的交叉编译:
用到的主要目录说明:
交叉编译工具链所在目录
/opt/FriendlyARM/toolschain/4.5.1/
安装opencv的目录 /usr/local/
opencv源码所在目录 /home/6410/opencv/opencv-2.4.2/
编译好的opencv库所在目录 /home/6410/opencv/opencv-2.4.2/build
#mkdir build
#cd build
#cmake-gui
选择源代码目录/home/6410/opencv/opencv-2.4.2/
选择Build目录:/home/6410/opencv/opencv-2.4.2/build
点击Configure,保持generator为Unix Makefiles,选择Specify options for
cross-compiling,点击Next,
Operating System填写arm-linux
C
Compilers填写opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
C++
Compilers填写opt/FriendlyARM/toolschain/4.5.1//bin/arm-linux-g++
程序库的Target Root填写opt/FriendlyARM/toolschain/4.5.1/
然后点击Finish。
默认安装目录为/usr/local,点击Generate生成Makefile。
#make
错误一:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libopencv_core.so: undefined reference to
`clock_gettime'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFerrorHandler'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFrealloc'
../../lib/libopencv_core.so: undefined reference to
`pthread_key_create
解决方法:
修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread
-lrt,重新编译,错误消除
错误二:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFerrorHandler'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFrealloc'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmalloc'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmemcpy'
../../lib/libopencv_highgui.so: undefined reference to
`TIFFOpen'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFfree'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFwarningHandler'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmemcmp'
../../lib/libopencv_highgui.so: undefined reference to
`_TIFFmemset'
解决方法:修改CMakeCache.txt,WITH_TIFF:BOOL=ON,改成OFF,重新编译,错误消除。
#make install
三、测试
测试程序:
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int main(int argc,char **argv)
{
CvCapture*
capture = NULL;
IplImage*
frame = NULL;
if(!(capture
= cvCaptureFromCAM(-1)))
{
fprintf(stderr, "Can not open camera./n");
return -1;
}
cvNamedWindow("video", 1);
while(frame
= cvQueryFrame( capture ) )
{
cvShowImage("video", frame);
}
cvDestroyWindow("video");
cvReleaseCapture(&capture);
return 0;
}
编译:
#arm-linux-g++ -o opencv_test opencv_test.cpp -I /usr/local/include
-L /usr/local/lib -lopencv_core -lopencv_highgui -lpthread
-lrt
单个opencv的make就花了大概1个半小时,终于成功了,但是这只是开始,要想运用opecv+qt+x264+ffmpeg做东西,这还需要更长远的学习啊
相关文章推荐
- opencv2.4.2移植到ARM中
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题
- Linux下移植OpenCV + Qt 到ARM(Tiny6410)总结
- OpenCV ARM移植(交叉编译opencv)
- opencv2.1移植arm 出现找不到libcv.so not found (try using -rpath or -rpath-link) 及大量 undefined reference的解决
- OpenCV移植到ARM 全过程
- OpenCV在ARM上的移植
- OpenCV在ARM平台上的移植
- Linux下移植OpenCV + Qt 到ARM(Tiny6410)总结
- opencv2.4.2移植到tiny6410
- OpenCV在ARM上的移植
- opencv2.1移植arm 出现找不到libcv.so not found (try using -rpath or -rpath-link) 及大量 undefined reference的解决
- OpenCV2.0.0 移植 arm-linux-gcc version 4.5.1
- linux下qt+opencv、arm端移植opencv
- OpenCV移植到ARM全过程
- 移植QT和opencv到ARM
- OpenCV 2.4.9在Ubuntu 12.04下的安装 && 移植到ARM上
- OpenCV移植到ARM 全过程
- OpenCV在ARM上的移植
- opencv2.4.9移植到arm