参考链接
http://blog.163.com/chujb_chen/blog/static/105711120109115059282/
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
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
/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有关
注意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.7zghostscript依赖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
编译步骤: 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到单板
参考: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