zoukankan      html  css  js  c++  java
  • poppler交叉编译

    项目须要生成和打开pdf文件,编译了pdflib库,能够使用。可是上面有水印。

    。。假设是商业用途去水印的话须要获得许可。

    没办法。换呗。

    然后就是poppler,这个库的功能非常强大,里面更是增加了Qt的支持,刚好适合项目需求。


    可是。

    可是前前后后加起来编译poppler半个多月一直失败,网上也没找到解决的方法,我真是醉了。这个poppler支持Qt应该是最好的选择方式了,没办法,隔一段时间继续编译。

    下面是自己编译过程中遇到的问题记录下来。望后来的人少走弯路。


    1.支持库的编译

    poppler的编译须要非常多库,在configuer后会告诉你哪些库已经有了。而哪些还没有支持。这里就不一一记录了。那些库的编译网上非常多。事实上你编译的过程中出现错误,你先看是什么错误,假设是缺少什么头文件之类的,多半就是它须要的库你没有编译。

    我的编译一直失败。開始以为是库的支持不够,就将它显示的库所有交叉编译了。最后一直报libpoppler-glib.so wrong format。

    这个问题网上非常多解释是32位和64位导致文件格式不对,可是我用32位系统编译怎么会出现格式不对这个问题呢?
    后来无意中在http://www.linuxfromscratch.org/blfs/view/svn/general/poppler.html看到poppler编译须要带的库,照它所说

    Required

    Fontconfig-2.11.1

    Recommended

    仅仅须要Fontconfig库就能够了,其它的库仅仅是推荐的,然后我就将原本的Cairo和glib库都去掉了。最后的configuer配置例如以下

    PKG_CONFIG_PATH=/opt/poppler/lib/pkgconfig FONTCONFIG_CFLAGS="-I/opt/poppler/include/fontconfig/" FONTCONFIG_LIBS="-L/opt/poppler/lib -lfontconfig"  FREETYPE_CFLAGS="-I/opt/poppler/include/freetype2/" FREETYPE_LIBS="-L/opt/poppler/lib -lfreetype" LIBTIFF_CFLAGS="-I/opt/poppler/include" LIBTIFF_LIBS="-L/opt/poppler/lib -ltiff" LIBOPENJPEG_CFLAGS="-I/opt/poppler/include/openjpeg-1.5" LIBOPENJPEG_LIBS="-L/opt/poppler/lib -lopenjpeg" LIBJPEG_CFLAGS="-I/opt/poppler/include" LIBJPEG_LIBS="-L/opt/poppler/lib -ljpeg" CC=arm-linux-gcc CPPFLAGS="-I/opt/poppler/include" CFLAGS="-I/opt/poppler/include" LDFLAGS="-L/opt/poppler/lib -lz -ljpeg" ./configure --host=arm-linux --prefix=/opt/poppler  --enable-libjpeg  --enable-libpng --disable-cairo-output


    2、Qt库错误

    去掉cairo后自然没有glib库的问题了,可是出现了Qt库的问题
    这个问题网上绝大部分给出的答案是说有多个qmake,即qmake的路劲不正确。所以我在configuer中又加上了Qt的路劲和库

    PKG_CONFIG_PATH=/opt/poppler/lib/pkgconfig FONTCONFIG_CFLAGS="-I/opt/poppler/include/fontconfig/" FONTCONFIG_LIBS="-L/opt/poppler/lib -lfontconfig"  FREETYPE_CFLAGS="-I/opt/poppler/include/freetype2/" FREETYPE_LIBS="-L/opt/poppler/lib -lfreetype" LIBTIFF_CFLAGS="-I/opt/poppler/include" LIBTIFF_LIBS="-L/opt/poppler/lib -ltiff" LIBOPENJPEG_CFLAGS="-I/opt/poppler/include/openjpeg-1.5" LIBOPENJPEG_LIBS="-L/opt/poppler/lib -lopenjpeg" LIBJPEG_CFLAGS="-I/opt/poppler/include" LIBJPEG_LIBS="-L/opt/poppler/lib -ljpeg" CC=arm-linux-gcc CPPFLAGS="-I/opt/poppler/include" CFLAGS="-I/opt/poppler/include" LDFLAGS="-L/opt/poppler/lib -lz -ljpeg" POPPLER_QT4_CFLAGS="-I/opt/qt-4.8.5-embedded/include" POPPLER_QT4_LIBS="-L/opt/qt-4.8.5-embedded/lib -lQtGui -lQtCore"  ./configure --host=arm-linux --prefix=/opt/poppler  --enable-libjpeg  --enable-libpng --disable-cairo-output

    我有尝试去掉qt4的支持。编译成功了。算是个好消息了。

    假设不须要qt的支持应该已经能够使用了

    3、tslib库问题

    /opt/qt-4.8.5-embedded/lib/libQtGui.so: undefined reference to `ts_read_raw'
    /opt/qt-4.8.5-embedded/lib/libQtGui.so: undefined reference to `ts_open'
    /opt/qt-4.8.5-embedded/lib/libQtGui.so: undefined reference to `ts_fd'
    /opt/qt-4.8.5-embedded/lib/libQtGui.so: undefined reference to `ts_config'
    /opt/qt-4.8.5-embedded/lib/libQtGui.so: undefined reference to `ts_close'
    /opt/qt-4.8.5-embedded/lib/libQtGui.so: undefined reference to `ts_read'
    非常多人都说这个问题是由于没有改动arm-linux-g++/qmake.conf文件。即没有增加
    # modifications to g++.conf
    QMAKE_CC                = arm-linux-gcc -lts
    QMAKE_CXX               = arm-linux-g++ -lts
    QMAKE_LINK              = arm-linux-g++ -lts
    QMAKE_LINK_SHLIB        = arm-linux-g++ -lts
    可是这样说是由于你在交叉编译Qt源代码的时候没有增加tslib库的支持,而我在编译qt库的时候已经增加了tslib的支持,所以qmake.conf文件里已经有ts的支持了。可是还是出现找不到tslib函数的错误。依照网上给出的建议在qmake.conf 中增加 QMAKE_LFLAGS += -Wl,-rpath-link=/opt/tslib-1.4/lib又一次编译qtgui库,问题还在。

    发现出错的是qt4目录下的demo和tests目录的编译,果断在Makefile中去掉了这两个目录的编译。

        哇塞最终成功的生成了 libpoppler.so、libpoppler-cpp.so、libpoppler-qt4.so。好了接下来就是依照官网给的样例试试库能不能用。
    给出官网的链接:http://people.freedesktop.org/~aacid/docs/qt4/
        
  • 相关阅读:
    给SEO小白看,外链和反链是什么东西?
    .NET技术webconfig加密操作
    微信清理缓存链接
    小程序学习笔记,入门(一)
    仿建设银行APP首页效果
    微商快速赚钱108招!
    如何在pycharm中安装python的插件
    opencv获取图片的尺寸
    python opencv捕获摄像头并显示内容
    Opencv的KeyPoint和DMatch数据结构
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5144926.html
Copyright © 2011-2022 走看看