使用docker交叉编译opencv2.4.9


因为要在开发板上使用opencv 2.4.9,版本较老,无法直接在ubuntu18.04LTS上编译,所以使用docker虚拟容器来编译opencv。

安装docker 和ubuntu14.04镜像

ubuntu18.04已经默认安装好了docker,可以直接使用。其他版本使用
wget -qO- https://get.docker.com/ | sh命令来安装
启动docker服务

service docker start

安装好后在/etc/default/docker文件中末尾增加一行:
DOCKER_OPTS="–registry-mirror=http://hub-mirror.c.163.com"
然后重新运行docker服务:

service docker restart

从远程仓库拉取ubuntu 14.04镜像

docker pull ubuntu:14.04

查看获得的镜像

docker images

运行ubuntu镜像

docker run -t -i ubuntu:14.04 /bin/bash

结果如下

root@ea25e72ee089:/#

@后面跟的是该容器的id,保存的时候切记先在另一个终端使用docker commit [id] [name]保存后再关闭原来运行docker这个终端,docker不是虚拟机,不会自动保存容器内做的修改。

使用阿里云的源

vi /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

修改完成后更新源

apt-get update

安装交叉编译opencv必要的安装包

apt-get install build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev wget libcanberra-gtk-module gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

交叉编译

下载并解压opencv

wget https://github.com/opencv/opencv/archive/2.4.9.tar.gz
tar -zxvf 2.4.9.tar.gz
cd opencv-2.4.9**

修改 platforms/linux/arm-gnueabi.toolchain.cmake

去掉交叉编译器的版本

set(CMAKE_C_COMPILER    arm-linux-gnueabi${FLOAT_ABI_SUFFIX}-gcc)
set(CMAKE_CXX_COMPILER  arm-linux-gnueabi${FLOAT_ABI_SUFFIX}-g++)

执行自带的交叉编译的脚本

./platforms/scripts/cmake_arm_gnueabi_hardfp.sh

修改cmake脚本

因为编译脚本的bug造成找不到CMAKE_AR程序,所以手动修改下cmake脚本

cd build_linux_arm_hardfp
vi CMakeFiles/2.8.12.2/CMakeCCompiler.cmake

修改为:

set(CMAKE_AR "arm-linux-gnueabihf-ar")

编译生成opencv2.4.9

make
make install

生成的opencv库文件在install目录下

将生成的目录拷贝到主机目录/tmp下

docker cp  ea25e72ee089:opencv2.4.9/platforms/build_linux_arm_hardfp/install /tmp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值