移植opencv-2.4.6到tiny210v2

来源:互联网 发布:条形码数据库关联 编辑:程序博客网 时间:2024/05/25 13:33
环境: ubuntu
交叉编译:arm-linux-gcc
参考:
blog.csdn.net/top_dada/article/details/8183758
一、编译libz
   下载:
   www.zlib.net/
   配置:
  
 ./configure --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --shared
   修改Makefile:
       CC=arm-linux-gcc
        LDSHARED=arm-linux-gcc -shared -wl, -soname,libz.so.1,--version-script,zlib.map
        CPP=arm-linux-gcc -E
        AR=arm-linux-ar
        RANLIB=arm-linux-ranlib
  编译:
      make
      sudo make install
二、编译libjpeg
  下载:
    http://www.ijg.org/
  配置:
    ./configure --host=arm-linux --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --enable-shared --enable-static
  编译:
    make
    sudo make install
 出错: arm-linux-ranlib: command not found
 解决: google得是sudo的问题,在make install 之前采用su。几番尝试不行,更改安装目录
 新建个目录: ~/arm/libjpeg
./configure --host=arm-linux --prefix=/home/host/arm/libjpeg --enable-shared --enable-static
再make
make install
再复制到/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
三、编译libpng
下载:
http://sourceforge.net/projects/libpng/files/latest/download?source=files
配置:
./configure --host=arm-linux --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --enable-shared --enable-static
编译make
sudo make install
四、编译yasm
下载:
  http://yasm.tortall.net/Download.html
配置:
 ./configure --host=arm-linux --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --enable-shared --enable-static
编译make
make install
五、编译libx264
下载:
   http://www.videolan.org/developers/x264.html
配置:
  ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
   修改config.mak,如下
        CC=arm-linux-gcc
        LD=arm-linux-gcc -o
        AR=arm-linux-ar rc
        RANLINB=arm-linux-ranlib
    修改库位置
编译:
   make
   sudo make install
六、编译libxvid
 下载:
   cd build/generic
  ./configure --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --host=arm-linux --disable-assembly
  make
  sudo make install
七、编译ffmpeg
  下载:
      git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
  配置:

     ./configure --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --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


当出现

tmp/ccOmDdh7.s: Assembler messages:/tmp/ccOmDdh7.s:51789: Error: thumb conditional instruction should be in IT block -- `movgt fp,r9'/tmp/ccOmDdh7.s:51790: Error: thumb conditional instruction should be in IT block -- `movgt r9,r8'/tmp/ccOmDdh7.s:51792: Error: thumb conditional instruction should be in IT block -- `movle r9,r7'/tmp/ccOmDdh7.s:51794: Error: thumb conditional instruction should be in IT block -- `movgt fp,r9'

这需要修改~/ffmpeg-0.5.1/config.mak,在OPTFLAGS(line:16)选项中添加:
-Wa,-mimplicit-it=thumb

  make
  make install
编译opencv之前安装cmake-gui
八、编译opencv
交叉编译工具链所在目录      /opt/FriendlyARM/toolschain/4.5.1/
安装opencv的目录                /usr/local/
opencv源码所在目录             /home/dongyu/opencv-2.4.6/
编译好的opencv库所在目录   /home/dongyu/opencv-2.4.6/build
#mkdir build
#cd build
#cmake-gui
选择源代码目录/home/dongyu/opencv-2.4.6/
选择Build目录:/home/dongyuopencv-2.4.6/build
点击Configure,保持generator为Unix Makefiles,
选择Specify options for cross-compiling,点击Next,
Operating System填写arm-linux
C Compilers填写/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
C++ Compilers填写/opt/FriendlyARM/toolschain/4.5.1//bin/arm-linux-g++
程序库的Target Root填写/opt/FriendlyARM/toolschain/4.5.1/
然后点击Finish,点击Configure,产生配置列表,在其中
选择安装目录(CMAKE_INSTALL_PREFIX)为/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi
去掉WITH_CUDA,WITH_TIFF勾选,点击Generate生成Makefile
修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt
#make
出现错误:
../../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'
CMAKE去掉TIFF支持即可;  
#make install
安装完毕   
原创粉丝点击