交叉编译OpenCV3.3 - iTop4412平台

1 篇文章 0 订阅
1 篇文章 0 订阅

OpenCV3.3的交叉编译-iTop4412平台

编译环境

ubuntu版本:Ubuntu 18.04.1 LTS
交叉编译器:arm-2012.09,gcc版本4.7.2
目标板 :iTop4412

1. 安装cmake gui

如果你的机器上没有cmake-gui,输入下方命令安装。需要注意ubuntu的版本,如果低于12可能apt‐get安装的cmke gui版本过低,后期编译OpenCV3.3可能会出错。

# 安装cmake‐gui
sudo apt‐get install cmake‐gui
# 测试安装成功,如果可以打开gui界面则可以认安装成功
# 低版本的ubuntu用root用户运行可能会报错,可以用普通用户试试
# 打开cmake gui测试是否安装成功
cmake‐gui

2. 交叉编译器替换

iTop4412提供的交叉编译器为2009q3.tar.bz2,gcc4.4.1,为了编译OpenCV3.3,我们替换为arm-2012.09版本,gcc4.7.1。替换方法后面再出一个博客。
包名arm-2012.09-64-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
下载地址:https://download.csdn.net/download/xiaokang_rays/11980477

3. OpenCV3.3依赖项的编译安装

在电脑上编译OpenCV3.3时,常用的库以及存在于Ubuntu中,或者有一些会自动联网安装,但到了嵌入式平台,则没有那么方便了。所有的依赖库都需要自己手动编译为ARM平台的,下面开始介绍。
我们使用OpenCV,一般编译以下库就够了,包含我所使用的包名:
zlib :zlib-1.2.8.tar.gz
libjepg :jpegsrc.v9b.tar.gz
libpng :libpng-1.5.14.tar.gz
yasm :yasm-1.3.0.tar.gz
x264 :last_x264.tar.bz2
xvidcore :xvidcore_1.3.3.orig.tar.gz
ffmpeg :ffmpeg-3.4.tar.bz2

zlib官网:http://www.zlib.net/
libjpeg下载地址:http://www.ijg.org/files/
libpng下载地址:http://www.libpng.org/pub/png/libpng.html
yasm下载地址:http://yasm.tortall.net/Download.html
x264下载地址:http://www.videolan.org/developers/x264.html
libxvid下载地址:http://ftp.br.debian.org/debian-multimedia/pool/main/x/xvidcore/
ffmpeg下载地址:http://ffmpeg.org/download.html
下载地址我打包了一下:https://download.csdn.net/download/xiaokang_rays/11980786

3.1 交叉编译libz

#解压后
cd zlib‐1.2.8
# prefix是make install的安装目录
./configure ‐prefix=/usr/local/arm/opencv_depend ‐shared
# 修改Makefile
vim Makefile

其中

CC=arm-none-linux-gnueabi-gcc
AR=arm-none-linux-gnueabi-ar
LDSHARED=arm-none-linux-gnueabi-gcc…(只修改前缀)
RANLIB=arm-none-linux-gnueabi-ranlib

1 # 编译安装
2 make
3 sudo make install

3.2 交叉编译libjpeg

后面的编译注意安装路径prefix选项,修改为自己的路径

cd jpeg‐9b
./configure ‐host=arm‐none‐linux‐gnueabi ‐prefix=/usr/local/arm/opencv_de
pend ‐enable‐shared ‐enable‐static
make
sudo make install

3.3 交叉编译libpng

cd libpng‐1.5.14
./configure ‐host=arm‐none‐linux‐gnueabi ‐prefix=/usr/local/arm/opencv_de
pend ‐enable‐shared ‐enable‐static CC=arm‐none‐linux‐gnueabi‐gcc LIBS=‐L/us
r/local/arm/opencv_depend/lib CPPFLAGS=‐I/usr/local/arm/opencv_depend/inclu
de
make
sudo make install

3.4 交叉编译yasm

cd yasm‐1.3.0
./configure ‐host=arm‐none‐linux‐gnueabi ‐prefix=/usr/local/arm/opencv_de
pend ‐enable‐shared ‐enable‐static
make
sudo make install

3.5 交叉编译libx264

cd x264‐snapshot‐20171114‐2245
CC=arm‐none‐linux‐gnueabi‐gcc ./configure ‐‐enable‐shared ‐‐host=arm‐none
‐linux‐gnueabi ‐‐disable‐asm ‐‐prefix=/usr/local/arm/opencv_depend
make
sudo make install

3.6 交叉编译libxvid

cd xvidcore‐1.3.3/build/generic
./configure ‐host=arm‐none‐linux‐gnueabi ‐prefix=/usr/local/arm/opencv_de
pend ‐disable‐assembly
make
sudo make install

3.7 交叉编译ffmpeg

cd ffmpeg‐3.4
./configure ‐‐prefix=/usr/local/arm/opencv_depend ‐‐enable‐shared ‐‐disab
le‐static ‐‐enable‐gpl ‐‐enable‐cross‐compile ‐‐arch=arm ‐‐disable‐strippin
g ‐‐target‐os=linux ‐‐enable‐libx264 ‐‐enable‐libxvid ‐‐cc=arm‐none‐linux‐g
nueabi‐gcc ‐‐enable‐swscale ‐‐extra‐ldflags=‐L/usr/local/arm/opencv_depend/
lib ‐‐extra‐cflags=‐I/usr/local/arm/opencv_depend/include
make
sudo make install

编译完成

依赖项全部编译完成,查看lib目录
在这里插入图片描述
确认编译出来的库的平台,使用file命令:“file libjpeg.so.9.2.0”
在这里插入图片描述
可以看到是ARM版本,没有错。

4. 编译opencv3.3

下面进入我们的主题,交叉编译OpenCV3.3。
下载地址
https://github.com/opencv/opencv/archive/3.3.0.zip
目录说明
交叉编译工具链所在目录 /usr/local/arm/arm-2012.09
opencv编译好的依赖项:/usr/local/arm/opencv_depend
opencv源码目录/home/rays/Files/opencv/arm_opencv-3.3.0
opencv构建目录 /home/rays/Files/opencv/arm_opencv-3.3.0/build
opencv安装目录 /usr/local/arm/opencv3.3

使用cmkae-gui生成Makefile
# 运行cmake‐gui
cmake‐gui

填写源码目录和构建目录,点击Configure:
在这里插入图片描述
选择编译类型,点击NEXT:在这里插入图片描述
配置项目,System填写linux,填写交叉编译器gcc和g++的绝对路径,Target Root填写
前一步编译好的依赖项的目录,点击Finish:
在这里插入图片描述
如果全部配置正确,可以看到输出框里找到了我们之前编译的依赖项的目录:
在这里插入图片描述
确认准确无误后可以开始配置我们需要的模块了:
在这里插入图片描述
如上图,去掉WITH_TIFF的勾选,同样的,去掉以下几项的勾选:
WITH_TIFF
WITH_GTK
WITH_CUDA
WITH_OPENCL
WITH_OPENEXR
WITH_1394
CMAKE_BUILD_TYPE,将这个键的值改成Release
CMAKE_INSTALL_PREFIX,将这个键的值改成最后我们需要安装opencv的目录 /usr/local/arm/opencv3.3
点击Generate:
在这里插入图片描述
在build目录下打开CMakeCache.txt文件,找到252行附近CMAKE_EXE_LINKER_FLAGS,在其后面加上-lpthread -lrt -ldl链接属性:
在这里插入图片描述
找到:

CMAKE_CXX_FLAGS
CMAKE_C_FLAGS

加上

-Wl,-rpath-link=/usr/local/arm/opencv_depend/lib

在这里插入图片描述
在build目录下执行:

cmake ../
make

编译完成:
在这里插入图片描述

安装到/usr/local/arm/opencv3.3
sudo make install

查看我们安装好的库:
在这里插入图片描述
同样,使用file命令查看编译出来的平台“file libopencv_core.so.3.3.0”
在这里插入图片描述
ARM平台,没有问题

5. 编译好的内容拷贝到开发板的文件系统

也就是将我们前面编译好的“/usr/local/arm/opencv_depend”“/usr/local/arm/opencv3.3”相关文件全部拷贝到开发板文件系统相同的位置。
查看开发板的目录:
在这里插入图片描述
OK,大功告成,OpenCV3.3以及全部移植到iTop4412的开发板上了。可以写一个简单的测试程序试一下了。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值