Openwrt实现Cups打印


    相信,如果你真在仔细的阅读本博客,你应该是对openwrt比较熟悉,或者了解,所以在这里我也不做过多的解释,至于cups整个的打印框架在下图中体现出来了,这个图不是我画的,是根据网上的图形,加上我自己做的这个cups打印,进行的绘制,图中某些地方也不完全正确,只是作为一个参考,让你更加明白cups的工作原理。


    下面,我根据自己的理解稍微介绍一下cups的工作流程,最上面的cups server是表示的是从客户端传送给cups的一些打印文件,cups接收到了文件后,调用cups的Postscript解释器,对文件进行解释,然后可能会调用pstops在对解释后的文件进行再次解释。到目前为止都是可以通过cups自身完成的,但是要传送到打印机,除非是那种Postscript打印机可以直接将处理后的文件流传入打印机,否则还需要借助其他的软件进行文件流转换,方能传入打印机。

    上图中,包含有Ghostscript与Pstoraster,二条不同的路线,其实这是一条路线,当时在详细设计中不知怎么画了这样一个图,现在思路要清晰许多,Ghostscript是一个文件格式的转换器,基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件,在这里主要用于处理Postscript解释后的文件。Pstoraster是一个脚本,在运行此脚本时,本身需要依赖于Ghostscript才能进行转换,所以他们可以当做是一个东西,当然Ghostscript还可以用于PDF文件转换为Postscript文件,这是airprint需要的东西,这里不做过多的解释。

   我们转送的打印文件到此时已经通过Ghostscript转换为raster文件,此时,就需要用到你使用的是何种PPD文件,如果你使用的PPD文件属于gutenprint的打印方式,则会用到一个叫rastertogutenprint的解释器,这是gutenprint种的东西,相同的Hplip也一样,我们用的就是这种方式进行打印。最后传送到backend中,backend与打印机相连。

   基本原理在这里就说这么多,都是根据我自己的理解进行阐述的,可能存在不妥的地方。

   下面,我们再来总结一下我们需要的东西

(1)cups   (2)Ghostscript (3)Pstoraster(早期的cups版本是存在的,目前已经没有了,可以在网上自己下载一个) (4)gutenprint 或Hplip(再次注意,PPD文件是在编译这二个软件的时候,gutenprint需要制定编译选项,Hplip会直接生成)

    Openwrt官网上就有cups的Makefile直接可以用,这里不做过多的说明,主要还是说明一下Ghostscript的编译。

   其实,网上已经有了几篇关于Ghostscript交叉编译错误及解决方案的问题,部分可以借鉴,但是正对Openwrt的编译平台,还需要做其他的考虑。

问题一 error: libtiff configure scriptfailed

在makefile中,配置选项--with-system-libtiff

问题二error: jbig2dec configurescript failed

在makefile中,添加配置选项--without-jbig2dec 

问题三就是 checking for bigendian... configure: error: in `

       这是大小端问题引起的,我的解决方案是,直接在源码Makefile中检查大小端的代码去掉了。

 问题四

./obj/aux/echogs:Command not found

./obj/aux/genconf: Command not found

./obj/aux/genarch: Command not found

这是由于echogs,genconf,genarch不能进行交叉编译,需要修改它的编译方式,在Makefile中将他们的编译方式强制指定为gcc编译。这里不是最终的目标程序,不需要进行交叉编译。

问题五:./obj/aux/mkromfs:/lib/ld-uClibc.so.0: bad ELF interpreter: No such file or directory

这是由于mkromfs_0也不能通过交叉编译,生成出来的mkromfs_0命令无法使用,修改编译方式,并将gcc编译生成的。

问题六:

./obj/jccoefct.c:In function 'compress_data':

./obj/jccoefct.c:153:3:error: 'forward_DCT_ptr' undeclared (first use in this function)

./obj/jccoefct.c:153:3:note: each undeclared identifier is reported only once for each function itappears in

./obj/jccoefct.c:153:19:error: expected ';' before 'forward_DCT'

./obj/jccoefct.c:172:2:error: 'forward_DCT' undeclared (first use in this function)

./obj/jccoefct.c:172:40:error: subscripted value is pointer to function

./obj/jccoefct.c:187:8:warning: implicit declaration of function 'FMEMZERO'

         这也是由于编译jccoefct.c出现问题,所以修改它的编译方式,这里你可以先参照在x86平台下的编译jccoefct.c的选项,对照交叉编译的选项进行修改,去掉交叉编译多出来的编译选项。在以后的编译过程中还会遇到类似的编译问题,jmemmgr.c,jcdctmgr.c,jcarith.c,jcmaster.c,jdcoefct.c,jdinput.c,jdarith.c,jdmarker.c,按照同样的方式修改编译方式。

交叉编译gutenprint

问题一:

gutenprint-5.2.9/src/xml/.libs/lt-extract-strings: /lib/ld-uClibc.so.0:bad ELF interpreter: No such file or directory

主要是由于extract-strings不能进行交叉编译,需要gcc编译。

先说到这里吧!以后有机会再来添加这篇博客,有什么意见或者问题,可以留言向我提出来。

http://m.blog.csdn.net/blog/u011743648/10493757
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在OpenWrt上安装Docker并运行CUPS,你需要按照以下步骤操作: 1. 首先,启动Docker守护进程。可以使用以下命令启动Docker守护进程: ``` $ sudo dockerd & ``` 2. 接下来,下载Docker的静态二进制文件包。你可以从https://download.docker.com/linux/static/stable/选择你的硬件平台,并下载与你想安装的Docker Engine版本相关的.tgz文件。然后,使用tar命令解压缩该文件。dockerd和docker二进制文件将被提取出来: ``` $ tar xzvf /path/to/<FILE>.tar.gz ``` 3. 将二进制文件复制到可执行路径的目录中,例如/usr/bin/。这样做可以使你在调用docker或dockerd命令时不必指定二进制文件的路径: ``` $ sudo cp docker/* /usr/bin/ ``` 4. 修改Docker的启动文档以添加自定义配置选项。你可以编辑/etc/docker/daemon.json文件,并根据需要添加自定义配置选项。确保验证Docker是否正确安装,运行hello-world镜像: ``` $ docker run hello-world ``` 通过按照以上步骤,你可以在OpenWrt上安装Docker并运行CUPS。请注意,这只是基本步骤,可能需要根据你的具体情况进行微调。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [openwrt下载安装docker](https://blog.csdn.net/weixin_44148981/article/details/130780017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值