交叉编译OpenCV2.4.9
2017-05-20 22:18
375 查看
系统环境:
Ubuntu12.04 + OpenCV2.4.9 + arm-linux-gcc-4.3.2
首先需要下载这7个库文件,直接百度/谷歌搜索这些库文件,进入官网下载,解压。
1)libz的交叉编译
进入zlib的解压目录:
2)libpng的交叉编译
进入libpng的解压目录
3)libjpeg的交叉编译
进入libjpeg的解压目录:
make过程中会报错:
这是因为,缺少libtool文件。
解决方法:在上一步骤解压的libpng路径下就有libtool这个文件,将其复制一份到libjpeg路径下即可。
重新编译安装:
make install的过程中又会报错:
这是因为不存在 /usr/local/libjpeg/bin路径,及没有bin这个文件夹。
解决方法:进入/usr/local/libjpeg/路径下,新建一个bin文件夹即可。
然后,重新执行 make install,上述的“文件夹不存在错误还会出现几次”,同样地,缺少哪个文件夹,我们就过去新建哪个文件夹就可以了。大概还会缺少man/man1, include等文件夹。记得,新建文件夹后要重新 make install,直到安装成功为止。
4)yasm的交叉编译
进入yasm的解压目录:
5)libx264的交叉编译
进入libx264的解压目录:
6)libxvid的交叉编译
进入build/generic目录:
7)ffmpeg的交叉编译
进入ffmpeg目录:
至此,所有的依赖库都已安装完毕,安装路径为:/usr/local/arm/opencv-depend
到sourceforge上下载opencv源码:OpenCV2.4.9-unix
解压缩到 /opt路径下
2)安装cmake gui
3)拷贝文件
把 /usr/local/arm/opencv-depend 目录下lib和include所有的文件分别拷贝到 /usr/local/arm/4.3.2/arm-non-linux-gnueabi 下的lib和include下
4)配置交叉编译工具链
粘贴以下配置:
保存之后:
默认安装目录为 opencv-2.4.9/build/install ,改为 /usr/local/arm/opencv-install
修改编译选项:
CMAKE_INSTALL_PREFIX /usr/local/arm/opencv-install
去掉 WITH_CUDA
去掉 WITH_GTK
去掉 WITH_1394
去掉 WITH_GSTREAMER
去掉 WITH_LIBV4L (因为后面有另外一个WITH_V4L)
去掉 WITH_TIFF
去掉 BUILD_OPENEXR
去掉 WITH_OPENEXR
去掉 BUILD_opencv_ocl
去掉 WITH_OPENCL
根据自己的需要选择编译的选项,有的选项需要安装相应的依赖的库,否则编译会出错
完成后 Generate
修改 CMakeCache.txt, CMAKE_EXE_LINKER_FLAGS原来为空,加上 -lpthread -lrt
2)将 /usr/local/arm/opencv-depend/lib/下的所有文件 和 /usr/local/arm/opencv-install/lib/下的所有文件 都拷贝到板子上/lib目录下,OpenCV的程序即可在ARM板子上运行了。
本文的交叉编译方法参考了以下两篇博文和一个帖子的4楼,在此表示感谢!
OpenCV移植到ARM9
Opencv2.4.9交叉编译
arm-linux-gcc交叉编译opencv源程序的错误:opencv2/core/core_c.h: No such file or directory
Ubuntu12.04 + OpenCV2.4.9 + arm-linux-gcc-4.3.2
(一)安装依赖库
运行OpenCV需要依赖一些库文件,所以在对OpenCV进行交叉编译之前,首先要安装7个依赖库。依赖关系如下:OpenCV |--------zlib |--------jpeg |--------libpng |--------zlib |--------tiff |--------zlib |--------ffmpeg |--------x264 |--------xvidcore
首先需要下载这7个库文件,直接百度/谷歌搜索这些库文件,进入官网下载,解压。
1)libz的交叉编译
进入zlib的解压目录:
#CC=arm-linux-gcc ./configure --prefix=/usr/local/arm/opencv-depend --shared #make #make install
2)libpng的交叉编译
进入libpng的解压目录
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared --enable-static --#host=arm-linux #make #make install
3)libjpeg的交叉编译
进入libjpeg的解压目录:
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared –enable-static #gedit Makefile (修改Makefile中cc =arm-linux-gcc ar=arm-linux-ar ar2=arm-linux-ranlib) #make
make过程中会报错:
#make: ./libtool: Command not found
这是因为,缺少libtool文件。
解决方法:在上一步骤解压的libpng路径下就有libtool这个文件,将其复制一份到libjpeg路径下即可。
重新编译安装:
#make #make install
make install的过程中又会报错:
#/usr/bin/install: cannot create regular file `/usr/local/libjpeg/bin/cjpeg': No such file or directory
这是因为不存在 /usr/local/libjpeg/bin路径,及没有bin这个文件夹。
解决方法:进入/usr/local/libjpeg/路径下,新建一个bin文件夹即可。
#cd /usr/local/libjpeg #mkdir bin
然后,重新执行 make install,上述的“文件夹不存在错误还会出现几次”,同样地,缺少哪个文件夹,我们就过去新建哪个文件夹就可以了。大概还会缺少man/man1, include等文件夹。记得,新建文件夹后要重新 make install,直到安装成功为止。
4)yasm的交叉编译
进入yasm的解压目录:
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared --enable-static --host=arm-linux
#make #make install
5)libx264的交叉编译
进入libx264的解压目录:
#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux –disable-asm --prefix=/usr/local/arm/opencv-depend
#make #make install
6)libxvid的交叉编译
进入build/generic目录:
#./configure --prefix=/usr/local/arm/opencv-depend --host=arm-linux --disable-assembly
#make #make install
7)ffmpeg的交叉编译
进入ffmpeg目录:
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gcc --enable-swscale
#make #make install
至此,所有的依赖库都已安装完毕,安装路径为:/usr/local/arm/opencv-depend
(二)交叉编译OpenCV2.4.9
1)下载OpenCV2.4.9到sourceforge上下载opencv源码:OpenCV2.4.9-unix
解压缩到 /opt路径下
2)安装cmake gui
#apt-get install cmake cmake-qt-gui
3)拷贝文件
把 /usr/local/arm/opencv-depend 目录下lib和include所有的文件分别拷贝到 /usr/local/arm/4.3.2/arm-non-linux-gnueabi 下的lib和include下
4)配置交叉编译工具链
#cd opencv-2.4.9 #mkdir build #cd build #vi toolchain.cmake
粘贴以下配置:
###########user defined################################### set( CMAKE_SYSTEM_NAME Linux ) set( CMAKE_SYSTEM_PROCESSOR arm ) set( CMAKE_C_COMPILER arm-none-linux-gnueabi-gcc ) set( CMAKE_CXX_COMPILER arm-none-linux-gnueabi-g++ ) ###########user defined################################### set( CMAKE_FIND_ROOT_PATH "/usr/local/arm/opencv-depend" ) set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) ##########################################################
保存之后:
#cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ../ #cmake-gui
默认安装目录为 opencv-2.4.9/build/install ,改为 /usr/local/arm/opencv-install
修改编译选项:
CMAKE_INSTALL_PREFIX /usr/local/arm/opencv-install
去掉 WITH_CUDA
去掉 WITH_GTK
去掉 WITH_1394
去掉 WITH_GSTREAMER
去掉 WITH_LIBV4L (因为后面有另外一个WITH_V4L)
去掉 WITH_TIFF
去掉 BUILD_OPENEXR
去掉 WITH_OPENEXR
去掉 BUILD_opencv_ocl
去掉 WITH_OPENCL
根据自己的需要选择编译的选项,有的选项需要安装相应的依赖的库,否则编译会出错
完成后 Generate
修改 CMakeCache.txt, CMAKE_EXE_LINKER_FLAGS原来为空,加上 -lpthread -lrt
#make #make install
(三)最后一个步骤
1)将 /usr/local/arm/opencv-install下的文件夹 opencv2 复制到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/include/下2)将 /usr/local/arm/opencv-depend/lib/下的所有文件 和 /usr/local/arm/opencv-install/lib/下的所有文件 都拷贝到板子上/lib目录下,OpenCV的程序即可在ARM板子上运行了。
本文的交叉编译方法参考了以下两篇博文和一个帖子的4楼,在此表示感谢!
OpenCV移植到ARM9
Opencv2.4.9交叉编译
arm-linux-gcc交叉编译opencv源程序的错误:opencv2/core/core_c.h: No such file or directory
相关文章推荐
- linux zynq opencv 2.4.9 交叉编译
- 交叉编译Opencv2.4.9完全实录
- Ubuntu 14.04 LTS下使用arm-linux-gcc交叉编译OpenCV 2.4.9
- Ubuntu14.04 Opencv2.4.9交叉编译
- 海思3515,交叉编译opencv2.4.9,个人经验分享,欢迎补充
- opencv2.4.9交叉编译
- Opencv2.4.9交叉编译
- Opencv2.4.9交叉编译
- 海思3515,交叉编译opencv2.4.9
- cuda5.5/6.0 + opencv 2.4.9 vs2010 编译opencv GPU模块
- 基于海思开发板进行OPENCV交叉编译时的问题
- VS2010重编译OpenCV2.4.9调试源代码
- linux下opencv 2.4.9 的编译
- 我的嵌入式开发板交叉编译命令(OpenCV)
- 讯为iTOP4412开发板ARM-linux 交叉编译opencv
- OpenCV3.2交叉编译
- OpenCV程序交叉编译注意事项
- Win10编译OpenCV2.4.9+CUDA7.5的方法
- OpenCV加FFmpeg ARM交叉编译
- QT5.3.2 + OpenCV2.4.9 编译好的库文件,写文章留作纪念