#CUPS-filters
把CUPS成功移植到android后,打印过程你可能需要各种的过滤器。你可以在这儿获取可能在linux上打印用到的源代码。但是这份代码并不能直接交叉编译来供android使用。具体的编译过程如下:
通过git命令来获取源代码,或者使用github的下载功能。
git clone https://github.com/jianglei12138/cups-filters
-
推荐使用NDK导出的交叉编译工具
-
成功编译cups,需要完整的可执行文件及动态库
-
编译cups-filters可能需要的各种库,获取动态库。可能需要的动态库列表(都可以在我的仓库中找到在android成功移植的工程):
需要的动态库 简介 地址 libjpeg libjpeg是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现 仓库地址 libtiff 提供了标签图像文件格式(TIFF)的支持,被广泛用于存储图像数据格式 仓库地址 glib glib库是Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性。需要glib,gio,gmodule,gobject等动态库 glib gmodule gio gobject lcms2 开源的小型彩色管理引擎,特别注重精度和性能。 仓库地址 freetype FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件 仓库地址 fontconfig fontconfig 是提供系统范围内字体设置,定制和允许应用程序访问的函数库 仓库地址 libijs IJS是一个栅格页面图像传输协议。 仓库地址 poppler Poppler 是一个用来生成 PDF 的C++类库,从xpdf 继承而来。 仓库地址 libqpdf qpdf是用来处理pdf文件的一个使用C++项目,包含一系列的可执行文件和库 仓库地址 ifaddrs android获取网络地址的一种实现 仓库地址 -
在交叉编译工具里添加编译需要的依赖的各种头文件和动态库
-
configure工程
./configure --host=arm-linux-androideabi --prefix=/system/usr/root --with-cups-config=/system/usr/root/bin/cups-config --disable-dbus --with-gs-path=/system/usr/root/bin/gs --disable-braille --with-pdftops-path=/system/usr/root/bin/pdftops --disable-dbus --disable-avahi
其中需要指定cups-config的具体路径以及pdftop或者ghostscript的路径。
-
make前的修改(使用我提供的代码不需要) 如果现在make可能会出现各种undefined reference to 的问题,因此需要在make前做一些修改。
- 修改Makefile文件,放弃编译一些后端程序,如parallel、serial等,查找pkgbackend_PROGRAMS 删除parallel、serial等
- 修改gio,glib库的使用,搜索GIO_LIBS,GIO_UNIX_LIBS,GLIB_LIBS删除相应的
-2.0
后缀 - 搜索IJS_LIBS添加 -lijs
- 搜索FONTCONFIG_LIBS添加 -lfontconfig
- 搜索FREETYPE_LIBS添加 -lfeetype
- 搜索LCMS_LIBS添加 -llcms
- 搜索LIBJPEG_LIBS添加 -ljpeg
- 搜索LIBPNG_LIBS添加 -lpng12
- 搜索LIBQPDF_LIBS添加 -lqpdf
- 搜索LIBTIFF_LIBS添加 -ltiff
- 搜索POPPLER_LIBS添加 -lpoppler
- 搜索sbin_PROGRAMS = cups-browsed(EXEEXT)删除cups-browsed(EXEEXT)不编译
-
修改libtool
-
make make可能会遇到头文件不存在之类的,给NDK交叉编译工具添加上就行
cups-filters会与cups安装到相同的文件夹,打包使用