poppler xilinx交叉编译

来源:互联网 发布:管家婆软件怎么删除 编辑:程序博客网 时间:2024/05/07 00:17

1、编译各种外部库:

//fontconfig use
./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc --prefix=/home/david/QT5/libfontconfig --with-arch=ARCH --host=arm-xilinx-linux-gnueabi --with-expat='/home/david/QT5/libexpat' --with-expat-lib='/home/david/QT5/libexpat/lib' --with-expat-includes='/home/david/QT5/libexpat/include' --with-pkgconfigdir=/home/david/QT5/libfreetype2/bin/freetype-config FREETYPE_CFLAGS='-I/home/david/QT5/libfreetype2/include/freetype2/' FREETYPE_LIBS='-L/home/david/QT5/libfreetype2/lib/' --libdir='/home/david/QT5/libfreetype2/lib/' --includedir='/home/david/QT5/libfreetype2/include/freetype2/' 


//freetype user
./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ --prefix=/home/david/QT5/libfreetype2 --host=arm-xilinx-linux-gnueabi --with-zlib=no --with-bzip2=no --with-png=no --with-harfbuzz=no


//UUID user
./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc --prefix=/home/david/QT5/libuuid --host=arm-xilinx-linux-gnueabi


//xml 

./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ --prefix=/home/david/QT5/libxml2 --host=arm-xilinx-linux-gnueabi --without-zlib --without-python --with-sax1


//expat user
./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ --prefix=/home/david/QT5/libexpat --host=arm-xilinx-linux-gnueabi --without-xmlwf


//tiff user
./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ --prefix=/home/david/QT5/libtiff --host=arm-xilinx-linux-gnueabi


//jpge user
./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ --prefix=/home/david/QT5/libjpeg --host=arm-xilinx-linux-gnueabi --enable-static --enable-shared


//openjpge  openjpeg-2.3.0 使用Cmake编译
cmake .. -DCMAKE_INSTALL_PREFIX=/home/david/QT5/libopenjpeg -DCMAKE_BUILD_TYPE=release -DCMAKE_TOOLCHAIN_FILE=./../toolchain

toolchair 内容:

SET(CMAKE_SYSTEM_NAME "Linux")
SET(CMAKE_C_COMPILER "/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc")
SET(CMAKE_CXX_COMPILER "/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++")
SET(CMAKE_FIND_ROOT_PATH /home/david/work/zynq/CodeSourcery-master /home/david/QT5/dfb_arm /home/david/QT5/libfontconfig /home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm /home/david/QT5/libtiff)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(FONTCONFIG_LIBRARIES,/home/david/QT5/libfontconfig/lib)
SET(FONTCONFIG_INCLUDE_DIR,/home/david/QT5/libfontconfig/include)


//openjpeg1.5 user 最终使用
./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ --prefix=/home/david/QT5/libopenjpeg1.5 --host=arm-xilinx-linux-gnueabi


//poppler 编译选项:

新建 build.sh 内容:

DFB_DIR=/home/david/QT5/dfb_arm

export PKG_CONFIG_LIBDIR=${DFB_DIR}/lib:/home/david/QT5/libfontconfig/lib:/home/david/QT5/libopenjpeg1.5/lib:/home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm/lib:$PKG_CONFIG_LIBDIR

export PKG_CONFIG_PATH=${DFB_DIR}/lib/pkgconfig:/home/david/QT5/libfontconfig/lib/pkgconfig:/home/david/QT5/libopenjpeg1.5/lib/pkgconfig:/home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm/lib/pkgconfig:$PKG_CONFIG_PATH

./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc \
CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ \

--prefix=/home/david/QT5/libpoppler --host=arm-xilinx-linux-gnueabi \
PKG_CONFIG_PATH=/home/david/QT5/libpoppler/lib/pkgconfig \

FONTCONFIG_CFLAGS="-I/home/david/QT5/libfontconfig/include/fontconfig/" FONTCONFIG_LIBS="-L/home/david/QT5/libfontconfig/lib -lfontconfig" \

                FREETYPE_CFLAGS="-I/home/david/QT5/libfreetype2/include/freetype2/" FREETYPE_LIBS="-L/home/david/QT5/libfreetype2/lib -lfreetype" \

LIBTIFF_CFLAGS="-I/home/david/QT5/libtiff/include" LIBTIFF_LIBS="-L/home/david/QT5/libtiff/lib -ltiff" \

LIBOPENJPEG_CFLAGS="-I/home/david/QT5/libopenjpeg1.5/include" LIBOPENJPEG_LIBS="-L/home/david/QT5/libopenjpeg1.5/lib -lopenjpeg" \

LIBPNG_CFLAGS="-I/home/david/QT5/dfb_arm/include" LIBPNG_LIBS="-L/home/david/QT5/dfb_arm/lib -lpng" \

                        POPPLER_QT5_CFLAGS="-I/home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm/include" POPPLER_QT5_LIBS="-L/home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm/lib -lQt5Gui -lQt5Core -lQt5Widgets -lQt5Xml -lQt5Test" \
POPPLER_QT5_TEST_CFLAGS="-I/home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm/include" POPPLER_QT5_TEST_LIBS="-L/home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm/lib -lQt5Gui -lQt5Test -lQt5Core -lQt5Widgets -lQt5Xml" \
--enable-poppler-qt5 --disable-poppler-qt4 --enable-libjpeg  --enable-libpng --disable-static --enable-xpdf-headers --disable-cairo-output

2、编译poppler 应用程序,QT 的.pro文件中指定库:

INCLUDEPATH += /home/david/QT5/libpoppler/include/poppler/qt5 /home/david/QT5/libpoppler/include/poppler /home/david/QT5/libtiff/include \
                /home/david/QT5/libexpat/include /home/david/QT5/dfb_arm/include
unix:LIBS   += -L/home/david/QT5/libpoppler/lib -lpoppler-qt5 -lpoppler -L/home/david/QT5/libtiff/lib -ltiff \
               -L/home/david/QT5/libexpat/lib -lexpat -L/home/david/QT5/dfb_arm/lib -lpng15 -lz \
   -L/home/david/QT5/qt-everywhere-opensource-src-5.6.2/qt_arm/lib -lQt5Gui -lQt5Core -lQt5Widgets -lQt5Xml
DEPENDPATH += /home/david/QT5/libpoppler/lib /home/david/QT5/dfb_arm /home/david/QT5/libtiff/lib /home/david/QT5/libexpat/lib

代码可参考:http://blog.csdn.net/chy555chy/article/details/51613545

3、将1中编译好的QT交叉编译库和各种链接库拷贝到机器端,在2中选好交叉编译工具链编译好应用程序拷贝到机器,运行app即可。


遇到的问题:1、不同版本的库支持不一样,所以在编译第三方库的时候可能会有问题。2、代码中可能会有include<1***>和include<Qcore/2***>,如果包含路径下知道Qcore这层,则会爆出找不到1***错误。所以在指定include路径的时候要注意。3、Cmake,在编译这些库前,很少用到cmake,有的cmake是支持toolchair来指定环境变量设置的。要学习使用cmake。4、编译poppler的时候报qt5 moc找不到,apt-get install qt-dev-default....。我的服务器是因为之前安装的qt5很多应用被损坏导致。5、遇到过通过-l L 等指定第三方库找不到的情况,暴力的解决办法:直接把编译好的第三方库拷贝到交叉编译工具链的libc/usr下。