交叉编译OpenCV

第一次搞交叉编译,记录以下过程,方便以后查证:

环境

系统:Ubuntu 18.04

交叉编译链:aarch64-mix210-linux

开发板:Atlas 200DK & SD3403

注:本文各个依赖库编译的cinfigure命令都在同一行输入,word自动换行罢了。

一、编译依赖库

新建存放第三方依赖库的文件夹

  1. 编译zlib(zlib Home Site

生成Makefile:(prefix 选项可以指示编译输出路径,此文编译库的输出都放在3rdparty文件夹中,即上图中除source文件夹外的 bin; include; lib; share; )

./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --shared

修改MakeFile:(上步骤configure指令生成了Makefile,但还有部分需要修改一下)

CC=aarch64-mix210-linux-gcc

AR=aarch64-mix210-linux-ar

LDSHARED=aarch64-mix210-linux-gcc…(只修改前缀)

RANLIB=aarch64-mix210-linux-ranlib

编译:

make&&make install (安装路的路径如果因有权限要求就加上sudo)

  1. 编译jpeg(Directory Listing of /files (ijg.org)

本文使用的版本为v9b

生成Makefile:此处使用的--host可以指定编译链,代替编译zlib过程中的修改Makefile

./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --enable-shared --enable-static --host=aarch64-mix210-linux

编译:

make&&make install

  1. 编译libpng(libpng Home Page

注意:这里需要依赖zlib.

生成Makefile:LIBS和CPPFLAGS指定了此命令依赖的库和include目录

./configure -host=aarch64-mix210-linux --prefix=/home/ubuntu/zxh/opencv/3rdparty --enable-shared --enable-static LIBS=-L/home/ubuntu/zxh/opencv/3rdparty/lib CPPFLAGS=-I/home/ubuntu/zxh/opencv/3rdparty/include

编译:

make&&make install

  1. 编译yasm(Download - The Yasm Modular Assembler Project (tortall.net)

生成Makefile:

./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --host=aarch64-mix210-linux

编译:

make&&make install

  1. 编译x264(x264, the best H.264/AVC encoder - VideoLAN

生成Makefile:

CC=aarch64-mix210-linux-gcc ./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --enable-shared --host=aarch64-mix210-linux --disable-asm

编译:

make&&make install

  1. 编译libxvid(XviD-1.3.7 (linuxfromscratch.org)

生成Makefile:

cd build/generic &&

sed -i 's/^LN_S=@LN_S@/& -f -v/' platform.inc.in && ./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --disable-assembly --host=aarch64-mix210-linux

编译:

make&&make install

  1. 编译ffmpeg(Download FFmpeg

注意:编译选项--arch=aarch64

生成makefile前需要修改一下环境,否则会提示yasm找不到, 当然也可以根据提示使用--disable-x86asm跳过这一项,但不知道影响有多大:

export PATH=$PATH:/home/ubuntu/zxh/opencv/3rdparty/bin

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/ubuntu/zxh/opencv/3rdparty/lib

export PKG_CONFIG_PATH=/home/ubuntu/zxh/opencv/3rdparty/lib/pkgconfig

生成Makefile

./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=aarch64 --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=aarch64-mix210-linux-gcc --enable-swscale --extra-ldflags=-L/home/ubuntu/zxh/opencv/3rdparty/lib --extra-cflags=-I/home/ubuntu/zxh/opencv/3rdparty/include

编译:

make&&make install

二、编译OpenCV

下载opencv源码并解压到opencv文件夹中

cd opencv-4.3.0

mkdir build

cd build

cmake -DCMAKE_BUILD_TYPE=RELEASE \

-DCMAKE_INSTALL_PREFIX=../output \

-DCMAKE_C_COMPILER=aarch64-mix210-linux-gcc \

-DCMAKE_CXX_COMPILER=aarch64-mix210-linux-g++ \

-DCMAKE_EXE_LINKER_FLAGS=-lrt -lpthread \

-DBUILD_SHARED_LIBS=ON \

-DWITH_CUDA=OFF \

-DWITH_CUFFT=OFF \

-DWITH_EIGEN=OFF \

-DWITH_FFMPEG=OFF \

-DWITH_OPENCL=OFF \

-DWITH_OPENCLAMDBLAS=OFF \

-DWITH_OPENCLAMDFFT=OFF \

-DWITH_OPENCL_SVM=OFF \

-DWITH_TIFF=OFF \

-DWITH_1394=OFF \

-DWITH_GSTREAMER=OFF \

-DWITH_JASPER=OFF \

-DWITH_LAPACK=OFF \

-DWITH_MATLAB=OFF \

-DWITH_WEBP=OFF \

-DWITH_IPP=OFF \

-DWITH_PNG=OFF \

-DBUILD_TESTS=OFF \

-DBUILD_opencv_core=ON \

-DBUILD_opencv_imgcodecs=ON \

-DBUILD_opencv_imgproc=ON \

-DZLIB_INCLUDE_DIR=/home/ubuntu/zxh/opencv/3rdparty/include/ \

..

(上边这个点点别忘记了)

编译:

make

100%后 make install 最后的输出在opencv-4.3.0/output中(可以读make.install.cmake)

大功告成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值