当前位置:首页 > tiny6410上opencv移植总结
linux环境:ubuntu-10.0.4
交叉编译:4.3.2 (我用的是4.5.1) arm板子:basicarm2440
准备库:libz libjpeg libx264 libxvid libffmpeg libpng opencv yasm-0.7.2 版本:
libz: zlib-1.2.3 libjpeg: jpegsrc.v6b libpng: libpng-1.2.18 libyasm: yasm-0.7.2 opencv: opencv-2.0.0
libx264: x264-snapshot-20110612-2245-stable libxvid: xvidcore-1.3.2 lffmpeg: ffmpeg-0.5.3
这些库在其对应的官网都可以找到。
之前我也试过其他的版本,但是会出现许多版本不兼容,或者缺少某项功能的问题。如果利用其他版本进行编译,有可能会存在其他问题。有人成功编译过带ffmpeg的opencv-1.0.0,其版本组合如下(但是我没有移植成功,可能是我的交叉编译器的问题吧,我的是:4.3.2): libz: zlib-1.2.3 libjpeg: jpegsrc.v6b libpng: libpng-1.2.18 libyasm: yasm-0.7.2 opencv: opencv-1.0.0
libx264: x264-snapshot-20050911-2245 libxvid: xvidcore-1.1.3 lffmpeg: ffmpeg-0.4.9-p20051120
值得一提的是ffmpeg-0.4.9不包含swscale,因此无法操作img_convert, 所以舍去不用。
下面是opencv-2.0.0的移植过程。(简略了解压安装包的过程) 1, 设置环境变量: 代码: 全选
export PATH=$PATH:/usr/local/arm/4.3.2/bin
说明:/usr/local/arm/4.3.2/bin是我的交叉编译工具所在目录。
下面所有编译的库都放在目录:/usr/local/arm/4.3.2/arm-none-linux-gnueabi下。这么做的原因是避免在编译其他库时,需要重新指定依赖库的路径,经验告诉我,这样做同时能够消除,依赖库路径所带来的麻烦。 2, libz的交叉编译: 进入libz的目录:
CC=arm-linux-gcc ./configure
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi --shared #make #make install 3, libjpeg的交叉编译: 进入jpeg的目录:
#./configure --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi --enable-shared –enable-static
#gedit Makefile (修改Makefile中cc =arm-linux-gcc ar=arm-linux-ar ar2=arm-linux-ranlib) #make
make之后会出现这样的错误:”
./libtool --mode=compile arm-linux-gcc -O2 -I. -c ./jcapimin.c make: ./libtool: Command not found make: *** [jcapimin.lo] Error 127
解决办法: 检查自己系统下有没有libtool,如果没有那么自己装一个;装完之后把config.guess &&config.sub复制到jpeg目录下: #cp /usr/share/libtool/config/config.sub ./ #cp /usr/share/libtool/config/config.guess ./ 之后执行: #make install
make install 时又出现错误:
/usr/bin/install: cannot create regular file `/usr/local/libjpeg/bin/cjpeg': No such file or directory make: *** [install] Error 1
解决办法:在/usr/local/arm/4.3.2/bin下建立4个目录: #mkdir bin #mkdir lib
#mkdir include #mkdir man/man1 然后, #make install 4, libpng的交叉编译 进入png的目录:
#./configure --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --enable-static --host=arm-linux #make #make install 5, yasm的交叉编译: 进入yasm目录:
#./configure --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --enable-static --host=arm-linux #make #make install 6, libx264的交叉编译: 进入x264目录:
#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux –disable-asm --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi #make #make install
(我这儿会出错。我把-disable 换成--disable成功) 7, libxvid的交叉编译: 进入build/generic目录:
#./configure --prefix=/usr/local/libxvid --host=arm-linux --disable-assembly #make #make install 8, ffmpeg的交叉编译: 进入ffmpeg目录:
#./configure --prefix=/usr/local/arm/4.3.2/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
(configure时会提示找不到LIBXVID ,然后百度后 应该在 最后再加上指定libxvid安装的路径 如 --extra-ldflags=-L/c/dev/shared/lib --extra-cflags=-I/c/dev/shared/include ) 9, opencv2.0.0的交叉编译:
进入opencv2.0.0目录:首先,修改configure文件: #gedit configure
搜索-lavcodec,定位到大概18182行的位置,在“FFMPEGLIBS=\-lavcodec -lavformat” 后添加 “-lswscale”, 修改之后变为:“FFMPEGLIBS=\-lavcodec -lavformat -lswscale $FFMPEG_SWSCALE_LIBS\,然后保存退出。 在终端中输入:
#./configure --host=arm-none-linux-gnueabi --without-gtk --without-carbon --without-quicktime --without-1394libs --with-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps CXX=arm-linux-g++
CPPFLAGS=-I/usr/local/arm/4.3.2/arm-none-linux-gnueabi/include/ LDFLAGS=-L/ usr/local /arm/4.3.2/arm-none-linux-gnueabi/lib --with-v4l --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi CXXFLAGS=-O2 #make #make install
到此,opencv-2.0.0的一直算是成功了。接下来,需要把所有的库烧写到arm板子上去,如果烧写到根目录的lib目录下,那么不用指定LD-LIBRARY-PATH,反之则反之。
交叉编译场景分析(arm-linux)(八)--编译glib
交叉编译场景分析(arm-linux)(八)--编译glib
出处:http://blog.csdn.net/absurd/archive/2006/04/01/646993.aspx
1. 基本信息:
共分享92篇相关文档