基于docker编译嵌入式开发板的三方库

基于docker编译嵌入式开发板的opencv

本文以 海思3519的开发板 举例, 3519的开发板是 armv7l的架构,3559的开发板是aarch64的架构.

查看海思3519 交叉编译器


我们可以看到其交叉编译器是 arm-linux-gnueabi, arm-linux-gnueabi 与 arm-linux-gnueabihf的区别参考这里,为啥要强调arm-linux-gnueabi 和 arm-linux-gnueabihf,是因为我一开始找了一个armv7l的镜像,是arm-linux-gnueabihf的编译器,然后编译出来的opencv用不了.知道了编译器是哪一种后,就可以在 dockerhub 上找对应镜像(注意:gcc版本不要超过交叉编译器的版本(因为GLIBC)).

docker pull resin/armel-debian:stretch-20180604
#docker run --restart=always -p 2347:22 -d  -it --ipc=host -i -t  -v /home:/home armv7/armhf-ubuntu:16.04 /bin/bash 
docker run --restart=always -p 2348:22 -d  -it --ipc=host -i -t  -v /home:/home resin/armel-debian:stretch-20180604 /bin/bash # 因为3519是 arm-linux-gnueabi 的交叉编译器
docker exec -it 21c3941d7467 /bin/bash #这里容器id 用 docker ps 来获取

然后配置docker的基本环境,首先换源,我是换成阿里源 http://mirrors.aliyun.com ,之后下载软件

uname -m # 查看容器的架构
apt-get update
apt-get install gcc g++ cmake # 只用下载这些,如果需要ffmpeg和x264则自行下载
apt-get install pkg-config libavcodec-dev libavformat-dev libavutil-dev libavresample-dev libswscale-dev x264 ffmpeg # 如果需要编译带ffmpeg的opencv
apt-get install make # debian 的容器需要 安装

查看gcc

编译opencv

cd /home/cc/work/3519/opencv3/opencv-3.2.0
mkdir build
mkdir install
cd build
#cmake -DCMAKE_INSTALL_PREFIX=/home/cc/work/3519/opencv3/opencv-3.2.0/install ..
cmake -DCMAKE_INSTALL_PREFIX=/home/cc/work/3519/opencv3/opencv-3.2.0/install -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. # debian 的容器使用该命令
cmake CMAKE_BUILD_TYPE=RELEASE -DWITH_V4L=ON -DWITH_FFMPEG=ON -DWITH_PNG=ON -DWITH_JPEG=ON -DCMAKE_INSTALL_PREFIX=/home/cc/work/3519/opencv3/opencv-3.2.0/install -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. # 编译带ffmpeg的opencv
make# 多线程编译可能会出现奇怪的错误,出错之后再重新make就不会出现问题
make install
posted @ 2021-06-01 16:44  cc96  阅读(670)  评论(0编辑  收藏  举报