第一次搞交叉编译,记录以下过程,方便以后查证:
环境
系统:Ubuntu 18.04
交叉编译链:aarch64-mix210-linux
开发板:Atlas 200DK & SD3403
注:本文各个依赖库编译的cinfigure命令都在同一行输入,word自动换行罢了。
一、编译依赖库
新建存放第三方依赖库的文件夹

编译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) |
本文使用的版本为v9b
生成Makefile:此处使用的--host可以指定编译链,代替编译zlib过程中的修改Makefile
./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --enable-shared --enable-static --host=aarch64-mix210-linux |
编译:
make&&make install |
编译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 |
生成Makefile:
./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --host=aarch64-mix210-linux |
编译:
make&&make install |
生成Makefile:
CC=aarch64-mix210-linux-gcc ./configure --prefix=/home/ubuntu/zxh/opencv/3rdparty --enable-shared --host=aarch64-mix210-linux --disable-asm |
编译:
make&&make install |
编译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 |
编译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) |
大功告成