交叉编译带ffmpeg的opencv到zynq中

前面一部分涉及转载     转载人是:qiankun2793        

1.2其他依赖库安装

1.2.1libjpeg交叉编译

这个以后面的依赖库编译和安装都需要首先进行配置

tar -xzvf jpegsrc.v9.tar.gz
cd jpeg-9
./configure --host=arm-linux CC=arm-linux-gnueabihf-gcc --prefix=<dependency install path>
make
make install

可以在配置的时候指定将编译好的库安装的位置,或者使用”sudomake install”直接安装在”/usr/local/lib”里,以下安装方式类似。 
可以切换到安装的文件夹下查看是否交叉编译成功

file libjpeg.so.9.0.0

如果输出信息为

libjpeg.so.9.0.0: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped1

说明交叉编译成功

1.2.2zlib交叉编译

zlib需要预先指定CC选项

export CC=arm-linux-gnueabihf-gcc
./configure --shared --prefix=<dependency install path>
make
make install

1.2.3libpng交叉编译

因为libpng交叉编译需要用到zlib,所以需要在编译该库之前交叉编译好zlib

export LDFLAGS="-L<zlib install path>/lib"
export CPPFLAGS="-I<zlib install path>/inclue"
./configure --host=arm-linux CC=arm-linux-gnueabihf-gcc --prefix=<dependency install path>

在编译之前,需要指定zlib的库的安装路径和头文件位置,如果是用管理员权限安装的上述路径分别为

export LDFLAGS="-L/usr/local/lib"
export CPPFLAGS="-I/usr/local/include"

///////////////////////////////////////////////////

1.2.4x264交叉编译

tar -xvf x264-snapshot-20161019-2245-stable.tar
cd x264-snapshot-20161019-2245-stable/
./configure --host=arm-xilinx-linux --cross-prefix=arm-xilinx-linux-gnueabi- --disable-asm --enable-shared --prefix=<dependency install path>
make
make install

1.2.5xvidcore交叉编译

xvidcore的配置文件在/build/generic

cd build/generic
./configure --host=arm-xilinx-linux-gnueabi --disable-assembly --enable-shared --prefix=<dependency install path>
make
make install1234

////////////////////////////////////////这两个可以不编译。

1.3FFmpeg 交叉编译

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --enable-shared --disable-static --cross-prefix=arm-xilinx-linux-gnueabi- 
--arch=arm --target-os=linux --disable-stripping --enable-cross-compile --disable-asm 
/////////////--enable-libxvid --enable-libx264 
/////前面两个没编译就没有这个选项///- -enable-gpl --extra-cflags=-I<dependency install path>/include --extra-ldflags=-L<dependency install path>/lib //可不用--prefix=<dependency install path>makemake install

1.4OpenCV 交叉编译

首先写一个toolchain.cmake文件,将下面内容复制进去

set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc )
set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ )
set( CMAKE_FIND_ROOT_PATH "/home/lenovo01/project-code/cc-lib/dependency-lib/" )
set( CMAKE_C_FLAGS "-Wl,-rpath-link=/home/lenovo01/project-code/cc-lib/dependency-lib/")
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_FIND_ROOT_PATHCMAKE_C_FLAGS里的路径要修改为前面那些依赖和FFmpeg的安装路径 
解压OpenCV源码,并生成Makefile文件

mkdir build
cd build
   cmake -D CMAKE_TOOLCHAIN_FILE=../toolchain.cmake -D BUILD_opencv_nonfree=OFF ../opencv-2.4.1

如果系统内没有安装cmake需要先安装和下面用到的cmake图形工具

sudo apt-get install cmake cmake-curses-gui

然后配置OpenCV的编译选项

ccmake .

会出现如下的配置界面, 

使用上下方向键可以翻页,至少以下几个选项为ON

  • WITH_FFMPEG

  • WITH_JPEG

  • WITH_PNG

  • WITH_V4L



注意:由于出错选择的时候有去掉了with1934 with gtk

按’c’然后按’g’来生成Makefile 
然后运行

一直找不到ffmpeg库的解决办法:

1、添加环境变量:sudo/etc/bash.bashrc

添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/lenovo01/project-code/cc- lib/dependency-lib/lib/pkgconfig

exportPKG_CONFIG_PATH

exportLDFLAGS=-Wl,-rpath-link,/home/lenovo01/project-code/cc-lib/dependency-lib/lib

路径是交叉编译的依赖库的路径,依赖库包括 libjpeg libpng libz ffmpeg。均放在一个目录下,要注意lib目录下的pkgconfig一定要全部弄进来。

2、然后按正常步骤cmake就可以了。




也可以用强制解决办法:

1、把交叉编译的ffmpeg库文件全部拷贝到/usr/local/lib下 同时要拷贝pgkconfig文件。

2、按正常步骤cmake就可以了。



交叉编译库太恶心了 简直要编到吐了!!!!!!



猜你喜欢

转载自blog.csdn.net/sinat_36371321/article/details/79794412