OpenCV移植到ARM全过程-II

        ->目录

        在上一篇里面,我们已经下载好了opencv源码,安装好了arm-linux交叉编译器和cmake,接下来就是要利用交叉编译器来编译opencv源码了,但是在这之前,我们要先交叉编译opencv的第三方依赖库。(注:为了方便安装,建议切换到root用户下)。

        解压opencv源码

        在/opt下创建目录arm,将opencv源码放到/opt/arm下,进入/opt/arm目录下,然后解压源码。

        unzip opencv-3.2.0.zip

        这时候目录下会多出一个opencv-3.2.0的目录,进入该目录。然后在该目录下创建2个文件夹build(用于存放配置的中间文件)和output(用于存放编译好的opencv输出文件)。

        cd opencv-3.2.0

        mkdir build output

        交叉编译opencv的第三方依赖库

        说明:opencv的源代码依赖很多第三方库,所以也要对这些第三方库进行交叉编译。这些第三方库如下一一列举,可以到各自的官网下载,也可以从这里(传送门)下载我打包好的。下载解压后会发现这些第三方库的源码,如下图:


然后将这些库拷贝到一个路径下,对他们一一的进行解压缩,解压缩后如下图所示:(注:解压.tart.gz使用命令tar -zxvf xxx.tar.gz,解压.tar.bz2使用命令tar -jxvf xxx.tar.bz2,解压.tar.xz先用xz -d xxx.tar.xz,这时候会输出对应的.tar文件,再用tar -xvf xxx.tar解压即可。)


        注:我们要将这些第三方库交叉编译成动态或者静态库,编译完成后放在那里呢,我们在编译的时候需要用--prefix=指定路径,所以为了方便起见,这个路径可能太长。所以我们将其设置成环境变量。比如我决定将这些第三方交叉编译输出的结果放在交叉编译器下面的一个文件夹。所以在/etc/profile或者/root/.bashrc或者/etc/bash.barhrc文件下的最后一行添加:

export OPENCV_3THPARTY_LIB=/usr/local/arm/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/

        然后source该文件,验证是否添加成功,在命令行下输入echo $OPENCV_3THPARTY_LIB看是否有刚才添加的路径即可。

        1、交叉编译libz

        cd zlib-1.2.8

        CC=arm-linux-gcc ./configure --prefix=$OPENCV_3THPARTY_LIB --shared

        打开Makefile,vim Makefile,然后将AR=ar改成AR=arm-linux-ar,RANLIB改成arm-linux-ranlib。

       make

       make install

        2、交叉编译libjpeg

       cd jpeg-9b

        ./configure --host=arm-linux --prefix=$OPENCV_3THPARTY_LIB --enable-shared --enable-static

       make 

       make install

       3、交叉编译libpng

       cd libpng-1.6.32

        ./configure --host=arm-linux --prefix=$OPENCV_3THPARTY_LIB --enable-shared --enable-static

        make 

        make install

        4、交叉编译yasm

        cd yasm-1.3.0

        CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$OPENCV_3THPARTY_LIB --enable-shared --disable-asm

        make

        make install

        5、交叉编译libx264

        cd x264-snapshot-20171114-2245

        CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$OPENCV_3THPARTY_LIB --enable-shared --disable-asm

        make

        make install

        6、交叉编译libxvid

        cd xvidcore-1.3.3

        cd build/generic

        ./configure --host=arm-linux --prefix=$OPENCV_3THPARTY_LIB --disable-assembly

        make 

        make install

        7、交叉编译ffmpeg

        cd ffmpeg-3.4

        ./configure --prefix=$OPENCV_3THPARTY_LIB --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 --extra-ldflags=-L$OPENCV_3THPARTY_LIB/lib --extra-cflags=-I$OPENCV_3THPARTY_LIB/include

        make

        make install

        到此,opencv依赖的第三方库交叉编译完成,当然如果你还要用到其他的opencv模块,也要交叉编译对应的第三方库,比如TIFF。

        

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
opencv2.4.4移植ARM 一、编译环境及库文件 linux环境:ubuntu 11.10 交叉编译:4.6.1 opencv: opencv-2.4.4 cmake: cmake-2.8.1-Linux-i386.tar.gz 二、opencv-2.4.4的移植过程 解压cmake-2.8.1-Linux-i386.tar.gz到/usr/local/ cmake-2.8.1 #export PATH= /usr/local/ cmake-2.8.1/bin:$PATH 用到的主要目录说明: 交叉编译工具链所在目录 /usr/local/arm-4.6.1/ 安装opencv的目录 /usr/local/ opencv源码所在目录 /usr/local /opencv-2.4.4 编译好的opencv库所在目录 /usr/local /opencv-2.4.4/build 默认安装目录为/usr/local #mkdir build #cd build #cmake-gui 选择源代码目录 /usr/local /opencv-2.4.4 选择Build目录 /usr/local /opencv-2.4.4/build 点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next, Operating System填写arm-linux C Compilers填写/usr/local/arm-4.6.1//bin/arm-none-linux-gnueabi-gcc C++ Compilers填写/usr/local/arm-4.6.1//bin/ arm-none-linux-gnueabi -g++ 程序库的Target Root填写/usr/local/arm-4.6.1/ 然后点击Finish,开始configure 点击Generate生成Makefile(等configure完之后按钮才能点击) #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_high
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值