EDA365电子论坛网

标题: 交叉编译OpenCV 进行ARM移植 [打印本页]

作者: mytomorrow    时间: 2019-7-16 14:25
标题: 交叉编译OpenCV 进行ARM移植
本帖最后由 mytomorrow 于 2019-7-16 14:27 编辑 6 a$ m5 i" w) y; G1 x& r7 }

% [8 p( p7 d2 d+ c: R0 p, farm-oe-linux-gnueabi-gcc编译opencv3.1.03 d0 `; j% f5 U# z6 e6 k7 w9 k7 F5 T# h
9 o: m5 M; ]* Q% \

) q) K' ~# x: W- A  p) y) |0 WCmake的安装. v1 X( L# v" t; L

( N( ?8 F4 \# l) d; z

* [2 R2 ?+ z9 u# a! {1 z  cOpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。
* `# r* X  D% \6 R* S4 z; I1 q! e  R" B7 p

  Q& a3 c  J1 E4 h5 T9 Cubuntu下安装cmake比较简单,
% |; @) d; Q: h7 y" n" z8 l
* |& P/ w$ v' y8 V. Q+ \% T
$ L& L2 a6 }8 p6 G
apt-get install cmake% m' N" x4 M" `/ o- F( u) d# p

+ i' o4 S" n+ t2 {% P* H  y
6 o# \$ n9 p7 G4 k& |) ?4 \
如果觉得自带的版本不符合要求,可以下载安装包。: M: {4 }! X( }& f2 C# L
* t5 W% E: ^" ^9 S. [5 F" _

9 C1 A' Y# h* |% ^) S  `下载最新版的安装包:
$ s3 w+ N$ A2 s/ D/ ~2 s! T# a; l6 o9 @7 _5 M9 i$ R2 y

) e( X7 J# Y, X$ \6 e+ awww.cmake.org/cmake/resources/software.html
$ \+ `* J$ A  J( d+ @& [' Y7 s9 ~' n0 o2 T8 Y! e5 o5 s

  v9 k/ X5 x/ k* w这里下载已经编译好的,这样只需要解压至需要的目录下即可使用:+ W) r, \+ c+ q5 S! v
- `7 j# Z2 T1 b# Q8 s$ R& c
/ E7 d/ O4 L% D$ M% t( z# m
tar zxvf cmake-2.8.10.2-Linux-i386.tar.gz –C /usr/local/
% D1 Z* H) x7 [/ c( X  p- _' _# |  y7 t- o  ^, a$ H

2 p" f/ q- R8 O' T( Q设置环境变量:
2 {  z. ?) m6 Z+ j. Y5 R$ w( a* B/ g3 C/ ]: w

* y& W) ]7 h1 G5 q. osudo gedit /home/emouse/.bashrc$ u7 h* t0 r. {. P
4 z: D3 J/ P- }9 m

* ?& A6 v) m4 C/ H8 B" B1 U, Z& T7 I在打开的文件后添加:
1 _* G' q2 U% [0 O" V! D. m+ }6 [6 Q, A  r
- ^$ f. `( j' V) Z- v) x: u7 H
export PATH=$PATH:/usr/local/cmake-2.8.10.2-Linux-i386/bin
6 _' p# z. t# Z3 ^
7 _8 y6 }1 r" k3 l

/ `( ^- C) N0 n' l查看版本,测试是否安装成功:) W" H& K$ k* }! s: a
, ]/ D; X, R. q  U& z: N! m# O
3 x$ G7 p% K) g; _) R
root@emouse:/home# cmake --version
6 Z0 R* }+ o& U' i2 a2 O7 I0 N  C3 [/ W, t9 T2 ?5 d
, h! p1 s' t1 F- c
OpenCV 的交叉编译
4 Z0 H- G2 V% }4 d& n2 E, c  J  D5 |, @0 P- B0 k) G! G
( X0 S$ s6 q0 a( [
解压OpenCV压缩文件,得到文件夹。7 g7 |" \, ]% f9 r' ]% D
- O: p9 H# I! C5 Q! W0 @
% {! B6 s- s$ c# x# C; ?5 t4 t/ {1 R
#cmake-gui 打开cmake的gui界面,开始进行配置,配置过程如下图所示:
% c) I0 v" {' u; q% y+ ^$ h' E. Q8 u. o3 C
5 p  V2 Q$ B0 z7 k4 {9 K& q
首先电脑得先安装arm-linux的交叉编译环境,这里就不介绍这个了,直接说重点。
9 f' |7 b" v: [* X% @
6 Z( ~0 q2 E4 X/ U- @" \* o+ @' n

8 G  `1 J/ ^7 Y方法一(编译通过):3 B5 G: J0 y, a: s

2 K! s! V/ Y8 N4 N% m
/ G2 G: s9 d7 M- Y
1、在终端窗口输入sudo apt-get install cmake-qt-gui下载cmake图形界面
9 C: w5 \: H/ Z, Z% A% q- l4 n: z' K4 ~8 y& y1 H% v1 E1 V

2 X$ d( x0 h3 d; N. b2、安装好后在终端窗口输入cmake-gui打开cmake的gui界面' v8 f7 _( l: ~
" F8 A+ K4 t6 `
, ]7 r( J8 B5 }& Z
* L: y! a! p2 N/ J0 [  o: j% A

( }3 ~3 j8 f: p% h

' Q& P3 y) D! e3.在“where is the source code”中填入电脑中opencv源码的位置,“where to build the binaries”填入生成make编译文件的位置,然后点击configure按钮,选择最后一项
) g9 [4 K2 U  v% X, v( X* J$ v1 k% W* t: n7 Q; Z

; f0 ~& I2 [5 G. R3 I6 [( t) o% ^2 y
2 V  ?! m  [  Z7 ]: z5 L2 _8 u& J5 w6 j

' t4 J8 D" K2 @0 X4.点击NEXT再跳出的界面中做如下设置
8 @: H3 ~$ W! r6 i& ?+ R  E1 }8 i% D( v: r" H/ H1 t" O" X* `
9 {. f- W0 ~5 e8 |4 c. J  T
Operating System 选择目标系统arm-linux
/ j8 e/ J1 v: G6 `; ]* P% y; }3 ^7 q8 ]* h

* H$ |, ?  y0 a) oCompilers中选择交叉编译器的gcc和g++: a1 Y4 i/ g( W# u; e" |

1 o9 {+ c- I8 a" g  a
* p$ O# s( |) a% C- e
这里注意选择用什么编译,根据不同的编译选择编译命令的路径。4 D$ P) B+ l" K# C, E
6 Q! K3 f7 a; v2 D

+ y6 r2 [  X8 x; H: W0 g我是使用的arm-oe-linux-gnueabi来编译,找到编译器的安装路径:/usr/local/oecore-i586/sysroots/i586-oesdk-linux/usr/bin/cortexa9hf-vfp-neon-oe-linux-gnueabi/  o# @1 e& t! v: H0 `9 t; ]
: Y, Y- R9 C! \# q$ b

1 _1 d: L2 c2 k. Y- k$ t, Mgcc:/usr/local/oecore-i586/sysroots/i586-oesdk-linux/usr/bin/cortexa9hf-vfp-neon-oe-linux-gnueabi/arm-oe-linux-gnueabi-gcc4 ?- {0 T- ]1 L+ R

' g+ s' K( \( e! A
1 J" J& b0 W8 D) d% k6 A
g++:/usr/local/oecore-i586/sysroots/i586-oesdk-linux/usr/bin/cortexa9hf-vfp-neon-oe-linux-gnueabi/arm-oe-linux-gnueabi-g++& M7 O6 B4 F- x5 L* {* }

$ ?  p6 K! u" N  w7 O5 O( C/ D  T& s  O
) c7 S0 {- e! p- |% C3 u( j
) `; l4 u( X; z; A! x

' R) k: U* k# k1 Q
- O# {) A% D/ R! }3 e+ v( X, B
作者: wu68aq    时间: 2019-7-16 18:54
看看交叉编译OpenCV 进行ARM移植




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2