ubuntu12.04交叉编译opencv移植到arm板

来源:互联网 发布:小米平板2 刷机 mac 编辑:程序博客网 时间:2024/05/16 05:38

第一 安装arm-linux-g++

下载arm-linux-gcc-4.3.2.tgz。然后使用#tar -zxvf  arm-linux-gcc-4.3.2.tgz  -C / 命令解压。可以看到其已经被解压到/usr/local/arm/4.3.2目录下了。使用命令#vim/etc/bash.bashrc 打开文件进行配置。在最后一行输入下面一句

exportPATH=$PATH:/usr/local/arm/4.3.2/bin

保存并退出。打开一个新终端或者在本终端输入 #source/etc/bash.bashrc 使得配置信息生效。原理可以查看博文http://blog.csdn.net/luotuo44/article/details/8917764

第二步 下载OpenCV源码

http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/下载安装opencv 2.0,解压到/usr/local下

第三 建立安装opencv的目录

mkdir /opt/arm;

mkdir /opt/arm/opencv

mkdir /opt/arm/opencv/lib

mkdir /opt/arm/opencv/include

第四 Configure

./configure --host=arm-linux --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/usr/local/arm/4.3.2/arm-none-linux-gnueabi/include  LDFLAGS=-L/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib --with-v4l2 --prefix=/opt/arm/opencv  --libdir=/opt/arm/opencv/lib -includedir=/opt/arm/opencv/include

这里关键的是CPPFLAGS、 LDFLAGS的路径,也就是交叉编译器的路径一定要正确。另外,--prefix、--libdir、-includedir是用来设置交叉编译安装的opencv的.so文件和include文件所存放的位置。确保--prefix=/usr/local/arm/opencv 这里的opencv文件夹存在,要提前建好。

第五 make

在make之前先检查下系统是否安装了libtool,使用命令 apt-get install libtool

然后make,否则

我遇到了

  1. ../3rdparty/.libs/lib_clapack.a(dlasyf.o): could not read symbols: File in wrong format  
  2. collect2: ld returned 1 exit status  
  3. make[2]: *** [libcxcore.la] 错误 1  
  4. make[2]:正在离开目录 `/home/carson/download/OpenCV-2.0.0/src'  
  5. make[1]: *** [all-recursive] 错误 1  
  6. make[1]:正在离开目录 `/home/carson/download/OpenCV-2.0.0'  
  7. make: *** [all] 错误 2 

这种错误。

第六 make install

第七测试程序

\

arm-linux-g++  -I/opt/arm/opencv/include/opencv  -L/opt/arm/opencv/lib -lml -lcvaux -lhighgui -lcv -lcxcore test.cpp -lpthread -lrt -o test 

以上命令均是在root权限下运行的

附:1、在configure完以后,直接直接在makefile里面编译参数的修改

2、编译和链接的时候都要加 -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9,不然qt里引用可能会出现问题。直接在makefile中搜索 -o,添加对应的连接参数

3、 ./configure --host=arm-linux --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps CC=/home/hs/mentor/bin/arm-none-linux-gnueabi-gcc CFLAGS=-I/home/hs/mentor/arm-none-linux-gnueabi/include  LDFLAGS=-L/home/hs/mentor/arm-none-linux-gnueabi/lib --with-v4l2 --prefix=/home/panyucheng/test/testReadline/readline-6.3/cross_build  --libdir=/home/panyucheng/test/testReadline/readline-6.3/cross_build/lib -includedir=/home/panyucheng/test/testReadline/readline-6.3/cross_build/include bash_cv_wcwidth_broken=yes

参考链接:

http://www.ithao123.cn/content-7148308.html

http://www.linuxidc.com/Linux/2011-02/32211.htm

http://www.chinaz.com/server/2009/0807/85792.shtml

0 0