opencv移植到arm详细过程
Opencv-2.1.0 的arm移植
我的环境
Host:Ubuntu 14.04
Target:tq2410 with Linux 2.6.30.4
Crossing Compiler:arm-linux-gcc 4.3.2
一 交叉编译链的安装
1# cd /usr/local
解压,即可得到 arm-none-linux-gnueabi 目录
# tar xzvf arm-none-linux-gnueabi-4.3.2.tgz -C ./
2 编辑/etc/bash.bashrc文件添加把编译器路径到环境变量 PATH中 , 只要在这个文件中添加下面这 2 个语句即可:
PATH=/usr/local/arm/4.3.2/bin:$PATH
export PATH
3 编辑完毕后使用 source /etc/bash.bashrc 命令执行以下这个文件,让设置生效,之后再输入:
# arm-none-linux-gnueabi-gcc -v
如果输出下面的信息则表面设置成功:
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured
--build=i686-pc-linux-gnu
--with-gnu-ld with:/scratch/julian/lite-respin/linux/src/gcc-4.3/configure --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-symvers=gnu --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --enable-languages=c,c++ --enable-shared
--enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3-72' --with-bugurl=https://http://doc.guandang.net/GNUToolchain/
--disable-nls--prefix=/opt/codesourcery--with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc
--with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc --with-
gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr--with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
--disable-libgomp--enable-poison-system-directories--with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/ bin --with-
build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin model: posix
gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
Thread
但是,此时会报错:bash:/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc:没有那个文件或目录
这是因为是为62位机与32位不兼容,在64位ubuntu系统上运行32位程序需要安装32位lib
网上很多地方说用#sudo apt-get install ia32-libs可解决,但是我执行之后却显示: # sudo apt-get install ia32-libs
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
现在没有可用的软件包 ia32-libs,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
可是下列软件包取代了它:
lib32z1 lib32ncurses5 lib32bz2-1.0
E: 软件包 ia32-libs 没有可供安装的候选者
运行以下命令即可:
#sudo apt-get install g++-multilib
这时即可显示上面的信息,交叉编译链安装完成
二 OpenCV2.0.0交叉编译过程
ps:到这一步后网上很多教程都是开始交叉编译 x264,xvid,ffmpeg等等,作者尝试过未果。所以转而投降cmake-gui,最后顺利编译成功。强烈推荐cmake-gui,简单实用。
1.安装cmake-gui #sudo apt-get install cmake-qt-gui
2.在usr/local新建文件夹
# mkdir opencv
把下载的OpenCV-2.0.0.tar.bz2解压到 usr/local/opencv 目录下
3、然后在usr/local/opencv 新建一个 opencv-arm 文件夹,作为CMake编译arm版本的工作目录
# mkdir opencv-arm
如下图所示: 3
、在终端里调出CMake gui界面:
# cmake-gui
按照下图方式选择源码目录和
build目录 然后点击
Configure按钮,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next
按照如下方式配置:
注:/usr/local/arm/4.3.2 为交叉编译工具 arm-linux-g++/gcc 的所在包含文件夹(在bin文件夹里面)
注:Target System选项里Operation我认为是arm板子上的操作系统,对应我的Version
为2.6.30.4,上图中没有更改
然后点击 “Finish” 按钮;
然后点击Generate按钮生成Makefile;
4.在/usr/local/opencv/opencv-arm目录下$sudo make
(1)83%报错:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libopencv_core.so: undefined reference to `clock_gettime'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc'
../../lib/libopencv_core.so: undefined reference to `pthread_key_create
解决方法:修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译
(3)又报错:
Linking CXX executable ../../bin/opencv_createsamples
此时又出错:
../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFmalloc'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcpy'
../../lib/libopencv_highgui.so: undefined reference to `TIFFOpen'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFfree'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFwarningHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcmp'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemset'
解决方法:修改CMakeCache.txt,WITH_TIFF:BOOL=ON,改成OFF(不再对TIFF图像格式支持。
重新编译,成功
5、然后运行make install,将opencv生成的库和头文件(在/usr/local/opencv/opencv-arm/lib下)安装到目录/usr/local/arm/4.3.2/lib/opencv/,结果如下:
6、把这5个 .so 库文件拷贝到ARM板系统中的 /lib 目录下面:(如下是添加之后的截图)
7、下来就是编写验证程序了:
首先得确保摄像头在ARM板上的使用是正常的,具体情况请查阅大神的博文:
《摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用》
参考文档:
1.Opencv-2.0.0的ARM移植和使用(Ubuntu10.04 / OK6410开发板 / linux3.01)
2. OpenCV移植到ARM 全过程
3.ARM编译OpenCV 2.X
4.在64位ubuntu系统上运作32位程序需要安装32位lib
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




