Linux 打印机移植说明

参考链接

        http://blog.163.com/chujb_chen/blog/static/105711120109115059282/

cups 移植说明:

版本库

    url:   http://17.251.224.41/cups.git    

             commit f28bae1aeae3964fba4f0728263657405f63c417   Tag 1.7.0

    编译步骤:
         

    //在kernel 中添加对usb 打印机的支持
    cd cups-2.0
    autoconfig
    ./configure --host=arm-linux --target=arm-linux --build=i686-linux CC=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-gcc CXX=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-g++ LD=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-ld RANLIB=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-ranlib AR=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-ar --disable-gnutls --disable-gssapi --disable-dbus --prefix=/opt/usr/local

修改

   1.修改Makedefs文件130行为(移除man 支持)

    BUILDDIRS   =   filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale doc examples templates
    make
    //make会有一次错误,下次make就没有了

    make && make install DSTROOT=${PWD}/_install

   2.修改配置文件

     /opt/usr/local/etc/cups/cups-files.conf
    将       SystemGroup lpadmin sys root
    改成     SystemGroup  root
    原因在于板子只有一个用户
    启动cups deamon :    /opt/usr/local/sbin/cupsd 或者  /etc/init.d/cups start
    默认的启动参数位于/opt/usr/local/etc/cups/ 该参数路径与编译时候的 --prefix有关


ghostscript-9.14移植

    注意gs的启动需要${TEMPDIR}(一般是/tmp目录)
    Gs所做的工作就是将中间文件转化为适应各种打印机的打印机语言(或者叫光栅文件)。
    然后将该文件发送给打印机,打印机将光栅文件打印到纸张上,就是一次完整的打印过程。

  文件

   

    http://www.linuxfromscratch.org/blfs/view/svn/pst/gs.html
    http://www.linuxfromscratch.org/blfs/view/svn/general/libpng.html
<pre name="code" class="plain">    ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/lpng1612.7z
 ghostscript依赖png库libpng-1.6.12 wget downloads.ghostscript.com/public/ghostscript-9.14.tar.gz 文件校验和: 586494befb443363338c1b6379f13973 ghostscript-9.14.tar.gz 75f2e8ab8891d052ade9b64eb4eb5294 ghostscript-9.14.tar.bz2
297388a6746a65a2127ecdeb1c6e5c82  libpng-1.6.12.tar.gz
ee752da8aa75076500e4cf31318e636e  libpng-1.6.12.tar.xz
056f615a212325da11627bc07e7aac5a  lpng1612.zip



    步骤

      

编译步骤:
        1.编译PC版本
            ./configure 
            make
          编译PC版本一般不会报错,如有报错应该是主机缺少必要的库,自行解决
        2.备份交叉编译时需要用到的文件
            cp obj/aux/genarch  genarch_back
            cp obj/aux/genconf  genconf_back
            cp obj/aux/echogs   echogs_back
            cp obj/aux/mkromfs  mkromfs_back
        3.编译ARM版本
            ./configure --host=arm-linux --prefix=/opt/usr/local --disable-gtk --disable-cups --disable-fontconfig
            --prefix选项需要注意.该选项是说明你将要将gs库安装到的根目录.在ubuntu下,默认安装位置是 /usr . 但是我们目前
                    的单板是安装在/opt/usr/local下.根据不同的需求自行更改
        4.修改Makefile文件
             # Define the default gcc flags.
                GCFLAGS=  -Wall -Wstrict-prototypes -Wundef -Wmissing-declarations -Wmissing-prototypes -Wwrite-strings -Wno-strict-aliasing 
                          -Wdeclaration-after-statement -fno-builtin -fno-common -DHAVE_STDINT_H=1 -DHAVE_DIRENT_H=1 -DHAVE_SYS_DIR_H=1 
                          -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_INTTYPES_H=1 -DGX_COLOR_INDEX_TYPE="unsigned long long"
             主要修改: 将-DGX_COLOR_INDEX_TYPE="unsigned long int"  改成 -DGX_COLOR_INDEX_TYPE="unsigned long long"
                
            将 
                AR=arm-none-eabi-ar                                                      
                ARFLAGS=qc                                                               
                RANLIB=arm-none-eabi-ranlib

                CC=arm-none-eabi-gcc                                                     
                CCAUX=arm-none-eabi-gcc
            改成
                AR=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-ar                      
                ARFLAGS=qc                                                                
                RANLIB=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-ranlib
            将
                CAPOPT= -DHAVE_MKSTEMP -DHAVE_FILE64 -DHAVE_FSEEKO -DHAVE_MKSTEMP64   -DHAVE_SETLOCALE -DHAVE_SSE2 -DHAVE_DBUS 
                        -DHAVE_BSWAP32 -DHAVE_BYTESWAP_H -DHAVE_STRERROR
            改成
               CAPOPT= -DHAVE_MKSTEMP -DHAVE_FILE64 -DHAVE_FSEEKO -DHAVE_MKSTEMP64   -DHAVE_SETLOCALE -DHAVE_DBUS -DHAVE_BSWAP32 
                       -DHAVE_BYTESWAP_H -DHAVE_STRERROR        
                主要修改是移除了SSE2指令集的支持.SSE2是X86平台的指令集,在ARM上不支持
            依据不同情况更改
                将   STDLIBS=-lpthread -lm
                改成 STDLIBS=-lpthread -lm -static 若是目标板子上已经存在pthread动态库,此处可以不更改,但是在最后的编译结果中会有警告
        5.编译
            make -j4
            make 过程中会有两次错误
                第一次执行:
                    cp genarch_back obj/aux/genarch  
                    cp genconf_back obj/aux/genconf  
                    cp echogs_back obj/aux/echogs   
                    touch obj/aux/genarch  
                    touch obj/aux/genconf  
                    touch obj/aux/echogs   
                第二次
                    cp mkromfs_back obj/aux/mkromfs  
                    touch  obj/aux/mkromfs  
            make -j4
            //make完成后会有关于pthread 和 enum 32 bit相关的警告,选择忽略或者解决自行决定
            
            make install DESTDIR=${PWD}/_install    //完成对目标文件的copy,执行将文件copy到单板

foo2zjs 移植 

    参考:http://blog.csdn.net/liaozhenqiu/article/details/6311690
    说明:foo2zjs HP XQX 打印通信协议驱动程序
    下载 wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz


步骤

        cd foo2zjs
        //编译PC版本的额foo2zjs文件
        make
        cp  arm2hpdl ../  (保存该文件,事实上此步骤可以省略)
        
        //编译arm版本的文件.注意:foo2zjs需要cups的支持
        //修改Makefile文件,在最开始添加
        CC=$(HOME)/bin/ti-sdk-am335x/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
        //修改动态链接库的支持
         command2foo2lava-pjl: command2foo2lava-pjl.o
         //-	$(CC) $(CFLAGS) -L/usr/local/lib command2foo2lava-pjl.o -lcups -o $@
         $(CC) $(CFLAGS) -L$(HOME)/cups/cups-2.0/out/opt/usr/local/lib command2foo2lava-pjl.o -lcups -o $@

        //修改command2foo2lava-pjl.c文件
        -#include <cups/sidechannel.h>
        -#include <cups/cups.h>
        -#include <cups/ppd.h>
        +/*#include <cups/sidechannel.h>*/
        +/*#include <cups/cups.h>*/
        +/*#include <cups/ppd.h>*/
        +#include "$(HOME)/cups-2.0/out/opt/usr/local/include/cups/sidechannel.h"
        +#include "$(HOME)/cups-2.0/out/opt/usr/local/include/cups/cups.h"
        +#include "$(HOME)/cups-2.0/out/opt/usr/local/include/cups/ppd.h"
    
        make
        //加载固件
        //生成固件:
        // ./getweb P1008
        //利用x86平台的arm2hpdl ./arm2hpdl sihpP1006.img > sihpP1008.dl
        cat /bin/sihpP1007.dl > /dev/lp0 
        //将需要的可执行文件copy到板子上
        //执行命令,可以得到打印机的相关信息
        usb_printerid /dev/lp0
        
        打印测试:
        在PC端执行:gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r1200x1200 -sDEVICE=pbmraw -sOutputFile=./test.pbm test.pdf
        在单板执行:foo2xqx -p9 -r1200x1200 test.pbm > /dev/usb/lp0

其他



          添加打印机:

               /opt/usr/local/sbin/lpadmin -p HP_LaserJet_P1008 -E -v /dev/usb/lp0 -m /opt/usr/local/etc/cups/ppd/hp-laserjet_p1008.ppd

          设置默认打印机

              lpoptions -d HP_LaserJet_P1008


你可能感兴趣的:(Linux 打印机移植说明)