开发环境:ubuntu 14.04
zynq 7020开发板
1、安装交叉编译器
1、xilinx开发环境Linux版本的Vivado中的SDK自带交叉编译器,可以选择安装Linux版本的vivado。
2、如果Linux磁盘空间不够的话可以在网站下载xilinx官方的交叉编译器,下载地址:
https://pan.baidu.com/share/link?shareid=2118817891&uk=2047711911&fid=131808308022716 |
将xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件拷贝到Linux中运行安装,安装程中可以手动修改交叉编译器的安装目录。
配置环境变量,修改/etc/profile文件如下:
然后终端输入以下命令使得环境变量生效:
source /etc/profile |
在Linux中配置完成后便可以验证安装的交叉编译器是否可用。
注意事项:1、需要将dash改为bash,ubuntu默认的是dash,查看ubuntu的shell:
ls -l /bin/sh |
2、由于安装的交叉编译器是为32位机器设计的,如果ubuntu是64位的话需要下载32-bit库。终端root下输入:
apt-get install ia32-libs ia32-libs-gtk |
2、在Linux上安装Qt Creator
准备工作:Qt在Linux主机中的运行环境需要很多的库支持,所以需要先安装一些必要的工具和库。终端root输入:
apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev g++ |
1. 可以在Linux主机的应用商店直接下载Qt Creator。
2. 网站上下载Linux版本的Qt安装包,拷贝到Linux中运行即可安装。
如果Qt程序在Linux主机运行时报缺少库的错误,可以通过以下命令进行查找:
apt-get install apt-file apt-file update apt-file search xxx |
然后安装对应的包即可。
3、编译ZYNQ版本的Qt库
1、解压qt源码
tar -zxvf qt-everywhere-opensource-src-5.6.2 |
2、修改qmake.conf内容,该文件由xilinx官方有提供。
# # qmake configuration for building with arm-xilinx-linux-gnueabi-g++ #
MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf)
# modifications to g++.conf QMAKE_CC = arm-xilinx-linux-gnueabi-gcc QMAKE_CXX = arm-xilinx-linux-gnueabi-g++ QMAKE_LINK = arm-xilinx-linux-gnueabi-g++ QMAKE_LINK_SHLIB = arm-xilinx-linux-gnueabi-g++
# modifications to linux.conf QMAKE_AR = arm-xilinx-linux-gnueabi-ar cqs QMAKE_OBJCOPY = arm-xilinx-linux-gnueabi-objcopy QMAKE_NM = arm-xilinx-linux-gnueabi-nm -P QMAKE_STRIP = arm-xilinx-linux-gnueabi-strip load(qt_config) |
3、进入qt源码目录,并创建文件夹如下:
cd qt-everywhere-opensource-src-5.6.2 mkdir -p qtbase/mkspecs/arm-xilinx-linux-gnueabi-g++ |
4、将qmake.conf拷贝到刚才创建的目录下,交叉编译时会用到。
5、然后./configure --help查看配置参数,配置参数如下:
./configure -xplatform arm-xilinx-linux-gnueabi-g++ \ -opensource \ -confirm-license \ -skip qtquickcontrols \ -skip qtwebchannel \ -skip qtactiveqt \ -skip qtandroidextras \ -skip qtdeclarative \ -skip qtimageformats \ -skip qtmacextras \ -skip qtserialport \ -skip qtx11extras \ -skip qtxmlpatterns \ -skip qtconnectivity \ -skip qtdoc \ -skip qtenginio \ -skip qtgraphicaleffects \ -skip qtlocation \ -skip qtmultimedia \ -skip qtsensors \ -skip qttools \ -skip qttranslations \ -skip qtwayland \ -skip qtwebchannel \ -skip qtwebengine \ -skip qtwebsockets \ -skip qtwinextras \ -verbose \ -no-gif \ -no-libjpeg \ -no-mtdev \ -no-sql-db2 \ -no-sql-ibase \ -no-sql-mysql \ -no-xcb \ -qt-freetype \ -no-fontconfig \ -no-harfbuzz \ -no-xinput2 \ -no-xcb-xlib \ -no-pulseaudio \ -no-alsa \ -no-gtkstyle \ -no-cups \ -no-iconv \ -no-icu \ -no-eglfs \ -no-openssl \ -no-dbus \ -lrt \ -prefix = (安装目录) |
6、然后会在当前目录下生成Makefile,运行命令编译并安装:
make && make install |
这时候在安装目录下会生成编译好的zynq版本的Qt库文件。
7、将上述步骤打包在一起并写成shell编译脚本,在终端./build.sh。
4、编译Linux Host版本的OpenCV库
1、编译ffmpeg源码。进入ffmpeg目录
cd xxx make clean ./configure --enable-shared --disable-static --disable-yasm --prefix=安装目录 make make install |
2、编译opencv源码。
mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_nonfree=OFF -D CMAKE_INSTALL_PREFIX=安装目录 opencv-2.4.5源码目录 ccmake . make make install |
3、配置opencv运行环境
export LD_LIBRARY_PATH= /lib:${LD_LIBRARY_PATH} export C_INCLUDE_PATH= /include:${C_INCLUDE_PATH} export CPLUS_INCLUDE_PATH= /include:${CPLUS_INCLUDE_PATH} export PKG_CONFIG_PATH= /lib/pkgconfig:${PKG_CONFIG_PATH} |
配置完成后边可以测试opencv程序是否可以在ubuntu上运行了。
注意事项:gtk2.0-dev需要在安装opencv之前安装才可以使用。终端输入:
apt-get install gtk2.0-dev
5、编译ZYNQ版本的OpenCV库
新建安装目录:mkdir build_opencv_zynq
1、编译jpeg-8d
cd jpeg-8d ./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --enable-shared make make install |
2、编译v4l-utils-1.12.5
cd v4l-utils-1.12.5 make clean ./bootstrap.sh ./configure --prefix=build_opencv_zynq --host=arm-xilinx-linux-gnueabi --without-jpeg --with-udevdir= build_opencv_zynq/lib/udev make make install |
3、编译zlib-1.2.7
cd zlib-1.2.7 export CC=arm-xilinx-linux-gnueabi-gcc ./configure --prefix= build_opencv_zynq --shared make make install |
4、编译libpng-1.5.14
cd $Cur_Dir/libpng-1.5.14 ./configure --prefix=build_opencv_zynq --host=arm-xilinx-linux-gnueabi --with-pkgconfigdir=build_opencv_zynq/lib/pkgconfig LDFLAGS=-Lbuild_opencv_zynq/lib CFLAGS=-Ibuild_opencv_zynq/include make make install |
5、编译x264-snapshot-20120528-2245-stable
cd build_opencv_zynq/x264-snapshot-20120528-2245-stable ./configure --host=arm-linux --cross-prefix=arm-xilinx-linux-gnueabi- --enable-shared --prefix= build_opencv_zynq make make install |
6、编译xvidcore
cd /xvidcore/build/generic ./configure --prefix=build_opencv_zynq --host=arm-xilinx-linux-gnueabi --disable-assembly make make install |
7、编译tiff-4.0.3
cd /tiff-4.0.3 ./configure --prefix= build_opencv_zynq --host=arm-xilinx-linux-gnueabi --enable-shared LDFLAGS=-L build_opencv_zynq/lib CFLAGS=-Ibuild_opencv_zynq/include make make install |
8、编译ffmpeg-1.2
cd /ffmpeg-1.2 ./configure --prefix= build_opencv_zynq --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=armv7l --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cross-prefix=arm-xilinx-linux-gnueabi- --enable-swscale --extra-cflags=-Ibuild_opencv_zynq/include --extra-ldflags=-Lbuild_opencv_zynq /lib --disable-asm make make install |
9、编译opencv-2.4.5
cd /opencv-2.4.5 mkdir build cd build echo "set( CMAKE_SYSTEM_NAME Linux )" >> toolchain.make echo "set( CMAKE_SYSTEM_PROCESSOR arm )" >> toolchain.make echo "set( CMAKE_C_COMPILER arm-xilinx-linux-gnueabi-gcc )" >> toolchain.make echo "set( CMAKE_CXX_COMPILER arm-xilinx-linux-gnueabi-g++ )">> toolchain.make echo "set( CMAKE_INSTALL_PREFIX build_opencv_zynq )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH build_opencv_zynq )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )" >> toolchain.make cmake -D CMAKE_TOOLCHAIN_FILE=toolchain.make -D BUILD_opencv_nonfree=OFF /opencv-2.4.5 ccmake . |
以上命令用来生成Makefile。
将之前编译好的库文件拷贝到opencv-2.4.5/build/lib目录下。
cp -r -f build_opencv_zynq /lib/* /opencv-2.4.5/build/lib make && make install |
6、移植编译好的zynq版本的Qt库和OpenCV库到zynq开发板,并配置环境变量。这里用一个shell脚本来配置。
#!/bin/sh Cur_Dir=$(pwd) echo $Cur_Dir export QTDIR=$Cur_Dir/qt export CVDIR=$Cur_Dir/opencv_lib_zynq export QT_QPA_FONTDIR=$QTDIR/lib/fonts export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins/ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$CVDIR/lib:$LD_LIBRARY_PATH export PATH=$QTDIR/bin:$PATH export PATH=$CVDIR/bin:$PATH export QT_QPA_PLATFORM=linuxfb |