ARM移植指南:OpenCV编译与安装详解

需积分: 34 29 下载量 43 浏览量 更新于2024-09-11 收藏 169KB PDF 举报
本文档详细介绍了如何将OpenCV(Open Source Computer Vision Library)移植到ARM架构的过程。作者KenCheung在2010年7月23日分享了这一技术,主要针对的是Host环境为VMware上运行的Ubuntu 10.04操作系统,目标平台是采用Linux 2.6.28.6内核的Real6410开发板,使用的交叉编译工具链是arm-none-linux-gnueabi-4.3.2版本,支持EABI(Embedded Application Binary Interface)。 首先,移植过程从解压交叉编译工具链开始。用户需要下载并解压arm-none-linux-gnueabi-4.3.2.tar.bz2文件,这将提供用于ARM平台编译的编译器和相关的库文件。解压后,将得到一个名为arm-none-linux-gnueabi的目录。 为了便于后续使用,作者建议在系统的bash环境变量中添加该工具链的路径。编辑`/etc/bash.bashrc`文件,添加以下两行代码: ```bash PATH=/root/arm-none-linux-gnueabi-4.3.2/bin:$PATH export PATH ``` 完成编辑后,通过`source /etc/bash.bashrc`使更改生效。接着,用户可以验证设置是否成功,通过输入`arm-none-linux-gnueabi-gcc-v`命令。如果输出显示了交叉编译器的相关信息,如Target: arm-none-linux-gnueabi,以及配置选项等,这就表明环境变量配置已经正确。 移植OpenCV到ARM的关键步骤包括: 1. 安装和配置交叉编译工具链,确保其可以在Host系统上正确编译ARM架构的代码。 2. 将交叉编译工具链的路径添加到环境变量中,以便在命令行中直接调用。 3. 验证工具链的安装和配置是否成功,以避免后续步骤中的错误。 这个过程对于那些想要将OpenCV应用于嵌入式设备或实时系统开发者来说,是非常实用的,因为它允许他们在开发环境(通常更强大、方便)中构建针对特定硬件的代码,并将其部署到ARM目标平台上运行。移植过程中需要注意适配不同的内核版本、依赖库的兼容性问题以及可能存在的移植特定问题,这些都可能根据具体的硬件和软件环境有所差异。
2013-07-24 上传
opencv2.4.4移植到ARM 一、编译环境及库文件 linux环境:ubuntu 11.10 交叉编译:4.6.1 opencv: opencv-2.4.4 cmake: cmake-2.8.1-Linux-i386.tar.gz 二、opencv-2.4.4的移植过程 解压cmake-2.8.1-Linux-i386.tar.gz到/usr/local/ cmake-2.8.1 #export PATH= /usr/local/ cmake-2.8.1/bin:$PATH 用到的主要目录说明: 交叉编译工具链所在目录 /usr/local/arm-4.6.1/ 安装opencv的目录 /usr/local/ opencv源码所在目录 /usr/local /opencv-2.4.4 编译好的opencv库所在目录 /usr/local /opencv-2.4.4/build 默认安装目录为/usr/local #mkdir build #cd build #cmake-gui 选择源代码目录 /usr/local /opencv-2.4.4 选择Build目录 /usr/local /opencv-2.4.4/build 点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next, Operating System填写arm-linux C Compilers填写/usr/local/arm-4.6.1//bin/arm-none-linux-gnueabi-gcc C++ Compilers填写/usr/local/arm-4.6.1//bin/ arm-none-linux-gnueabi -g++ 程序库的Target Root填写/usr/local/arm-4.6.1/ 然后点击Finish,开始configure 点击Generate生成Makefile(等configure完之后按钮才能点击) #make 错误一: 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,重新编译,错误消除 错误二: 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_high