项目须要生成和打开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

Cairo-1.14.2libjpeg-turbo-1.4.1libpng-1.6.17,
and OpenJPEG-1.5.2

仅仅须要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/
    

poppler交叉编译的更多相关文章

  1. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  2. Ubuntu 16.04 安装 arm-linux-gcc 嵌入式交叉编译环境 问题汇总

    闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充 ...

  3. Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1

    交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...

  4. Linux主机上实现树莓派的交叉编译及文件传输,远程登陆

    0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...

  5. FFmpeg和X264的交叉编译环境

    在下载好了FFmpeg和X264的源码包之后,在Linux下进行安装的基本流程就是切换到其源码的根目录,然后以此执行以下命令.基本上所有的开源源码包的默认编译安装都是这三步. ./configure ...

  6. Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)

    Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...

  7. Ubuntu 树莓派2b交叉编译环境

    在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时是因为目的平台 ...

  8. Ubuntu实现树莓派交叉编译

    一.交叉编译 在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时 ...

  9. 交叉编译总结 libosscore.a libcurl.a libmysqlclient.a

    把工程文件交叉编译到arm上运行,着实花费了一番功夫. 首先遇到的错误是 X uses VFP register arguments, B does not 百度了一下,发现是硬浮点和软浮点的问题,原 ...

随机推荐

  1. 《2017全球人工智能人才白皮书》发布丨解读世界顶级AI牛人的秘密——腾讯研究院

    <2017全球人工智能人才白皮书>发布丨解读世界顶级AI牛人的秘密——腾讯研究院:下载链接:http://www.tisi.org/c16 这个报告写的很好,排版布局,表格,色调,内容都值 ...

  2. 公路通行税Ceoi99(BFS+图的直径)

    公路通行税(Ceoi99) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! 在PALMIA国家内,有N个城市由公路相连(每条 ...

  3. java设计模式学习 ----- 单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种经常使用的设计模式. 在Java应用中,单例对象能保证在一个JVM中,该对象仅仅有一个实例存在.单例模式也分三种:懒汉式单例.饿汉式 ...

  4. RequestMapping、Responsebody、RequestBody

    预备知识:@RequestMappingRequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.@RequestM ...

  5. iOS菜鸟成长笔记(1)——第一个iOS应用

    前言:阳光小强最近抽时间学习iOS开发,在学习过程中发现了很多有趣的东西也遇到了很多问题,为了在学习过程中能和大家交流,记录下学习的心得和学习成果,所以就有了这一个系列文章,希望这一系列文章能形成一个 ...

  6. Debian9.5 配置x11vnc远程桌面

    x11vnc是一个VNC服务器,它允许用户远程查看并用任何VNC查看器与真实的X显示器(即与物理监视器,键盘和鼠标相对应的显示器)进行交互.虽然它的原作者Karl Runge不再开发,但LibVNC和 ...

  7. CetnOS6 网络配置,主机名配置

    CetnOS6 网络配置,主机名配置 一.通过命令ifconfig -a 查看可用网络设备 二.通过网络配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 配置 ...

  8. Python正则表达式初识(二)

    前几天给大家分享了Python正则表达式初识(一),介绍了正则表达式中的三个特殊字符“^”.“.”和“*”,感兴趣的伙伴可以戳进去看看,今天小编继续给大家分享Python正则表达式相关特殊字符知识点. ...

  9. POJ 3641 Pseudoprime numbers (miller-rabin 素数判定)

    模板题,直接用 /********************* Template ************************/ #include <set> #include < ...

  10. 紫书 习题 10-25 UVa 1575 (有重复元素的全排列+暴搜)

    我一开始以为有什么很牛逼的方法来做,然后一直没有思路 后来看了https://blog.csdn.net/zju2016/article/details/78562932的博客 竟然是暴搜?????? ...