平台编译之一:OpenCV 加FFmpeg等插件在zynq平台上的交叉编译

一:准备工作

项目版本号链接
操作系统Ubuntu 16.04 
OpenCV2.4.13  3.2.0opencv-2.4.13.zip
FFmpeg3.1.4ffmpeg-3.1.4.tar.bz2
x26420161020x264-snapshot-20161019-2245-stable.tar.bz2
libjpeg9.0.0jpegsrc.v9.tar.gz
libpng1.6.25libpng-1.6.25.tar.gz
xvidcore1.3.4xvidcore-1.3.4.tar.gz

1.1 安装依赖库:

因为要在zedboard上运行,所以安装xilinx的交叉编译工具,可以从github上下载也可以从这里下载我用的,因为这个工具是32位系统设计的,64位系统需要先安装部分32位的库

sudo apt-get install libc6:i386 libx11-6:i386 libasound2:i386 libatk1.0-0:i386 libcairo2:i386 libcups2:i386 libdbus-glib-1-2:i386 libgconf-2-4:i386 libgdk-pixbuf2.0-0:i386 libgtk-3-0:i386 libice6:i386 libncurses5:i386 libsm6:i386 liborbit2:i386 libudev1:i386 libusb-0.1-4:i386 libstdc++6:i386 libxt6:i386 libxtst6:i386 libgnomeui-0:i386 libusb-1.0-0-dev:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 libgtk2.0-0:i386

然后将dash更改为bash

sudo dpkg-reconfigure dash

在弹出的对话框中选择NO,将dash更改为bash,然后修改下安装程序的权限


   1.2:设置环境变量:

export ARCH=arm
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export PATH=/opt/Xilinx/SDK/2016.4/gnu/arm/lin/bin/:$PATH
export ZYNQ_CV_BUILD=/opt/openCV3
export CC=arm-xilinx-linux-gnueabi-gcc

export LDFLAGS="-L/opt/openCV3/lib"
export CPPFLAGS="-I/opt/openCV3/include"

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/openCV3/lib/pkgconfig
export LDFLAGS=-Wl,-rpath-link,/opt/openCV3/lib

二:交叉编译插件

2.1 libjpeg交叉编译

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

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

可以在配置的时候指定将编译好的库安装的位置,或者使用”sudo make 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 stripped

说明交叉编译成功

2.2 zlib交叉编译

zlib需要预先指定CC选项

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

2.3 libpng交叉编译

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

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

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

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

2.4 x264交叉编译

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

2.5 xvidcore交叉编译

xvidcore的配置文件在/build/generic里

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

2.6 FFmpeg 交叉编译

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>
make
make install

      这里直接使用脚本

echo "/n/n===================== 1  libjpeg交叉编译 ======================="
sleep 3
tar zxvf jpegsrc.v9.tar.gz
cd jpeg-9
./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --enable-shared
make
make install
cd ..


echo "/n/n===================== 2  zlib交叉编译 ======================="
sleep 3
tar zxvf zlib-1.2.11.tar.gz 
cd zlib-1.2.11/
./configure --prefix=$ZYNQ_CV_BUILD --shared
make
make install
cd ..


echo "/n/n===================== 3 libpng交叉编译 ======================="
sleep 3
tar zxvf libpng-1.6.32.tar.gz
cd libpng-1.6.32

./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --with-pkgconfigdir=$ZYNQ_CV_BUILD/lib/pkgconfig LDFLAGS=-L$ZYNQ_CV_BUILD/lib CFLAGS=-I$ZYNQ_CV_BUILD/include
make
make install
cd ..



echo "\n\n===================== 4 x264交叉编译 ======================="
sleep 3
tar jxvf x264-snapshot-20161019-2245-stable.tar.bz2
cd x264-snapshot-20161019-2245-stable
./configure --host=arm-linux --cross-prefix=arm-xilinx-linux-gnueabi- --enable-shared --prefix=$ZYNQ_CV_BUILD
make
make install
cd ..


echo "\n\n===================== 5 xvidcore交叉编译 ======================="
sleep 3
tar zxvf xvidcore-1.3.4.tar.gz
cd xvidcore/build/generic/
./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --disable-assembly --enable-shared 
make
make install
cd ../../../

echo "\n\n===================== 6 FFmpeg 交叉编译 ======================="
sleep 3
tar jxvf ffmpeg-0.10.16.tar.bz2
cd ffmpeg-0.10.16
ls
./configure --prefix=$ZYNQ_CV_BUILD --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-xilinx-linux-gnueabi-gcc --enable-swscale --extra-cflags=-I$ZYNQ_CV_BUILD/include --extra-ldflags=-L$ZYNQ_CV_BUILD/lib --disable-asm 
make
make install

echo "\n\n===================== 第三方依赖库文件编译完成 ======================="

sleep 5

echo "\n\n======================拷贝库文件到gcc所在的文件中 ======================="
sleep 2
# cp /opt/openCV3/include/* /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/include/ -R
#cp /o /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/lib

sleep 5

echo "\n\n======================打包备份 ======================="
tar cvf /opt/openCV3.tar /opt/openCV3/

echo "\n\n======================接下来准备安装opencv2/3 ======================="

三:开始配置openCV 

   在opencv下创建build 文件夹

   

   

OpenCV的安装相对容易,编译前需要安装cmake以及cmake-gui配置工具。其实该配置过程与windows下很相似,只是需要修改一些路径以及选项,并制定编译器。
sudo apt-get install cmake cmake-gui
也可以安装ccmake
sudo apt-get install cmake cmake-curses-gui



   

    

四:交叉编译openCv

       

查看一下库文件 这是open3.2的 

这个是 openCV2.4.13的


五:使用openCV

      我这里用台式机做说明,应用跟平台没关系,只需要修改opencv的路径:

  

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CMake是一个跨平台的开源构建工具,可用于自动化管理项目的编译过程。FFmpeg是一个开源的音视频处理库,可以用来处理多种格式的音视频文件。而最后的下载的文件opencv_ffmpeg_64.dll是OpenCV库所需的FFmpeg动态链接库。 当我们在使用CMake构建一个项目时,可能会用到FFmpeg库来进行音视频处理。其中,OpenCV是一个广泛使用的计算机视觉库,它也能够使用FFmpeg进行音视频的编解码与处理。而opencv_ffmpeg_64.dll是OpenCV库所需的FFmpeg依赖库,这个库在运行OpenCV相关功能时需要被载。 如果在使用CMake构建一个依赖于OpenCVFFmpeg的项目时,若缺少opencv_ffmpeg_64.dll文件,可以通过下载获得该文件。可以通过在网上搜索opencv_ffmpeg_64.dll文件的下载链接,并将其下载到本地。下载完成后,将该文件放置在项目中指定的位置,一般来说是与其他的动态链接库(.dll文件)放在一起的。然后重新进行CMake构建,以确保项目能够正确载该库文件。 需要注意的是,下载的文件必须与你的系统和项目的架构相匹配。例如,如果你的系统是64位的,那么你需要下载64位的opencv_ffmpeg_64.dll文件,而不是32位的。如果下载的文件与你的系统不匹配,可能会导致项目构建失败或运行时错误。 总结来说,下载opencv_ffmpeg_64.dll文件是为了满足OpenCV库在进行音视频处理时所依赖的FFmpeg库的载需求。在使用CMake构建项目时,下载并正确放置该文件,可以确保项目能够正确运行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值