交叉编译CUPS

xiaoxiao2021-02-28  27

cups是目前比较通用的打印系统,支持本地打印和网络打印,也支持共享打印机。通过移植cups和其相关的软件,使得arm+cups支持调用网络打印机进行打印。

一、cups版本

目前在网络上交叉编译cups版本比较多的是1.35版本,但是本人利用cups1.35版本后,不能正确连接到打印机,故不推荐使用这么老的版本的cups。目前在用的是buildroot中自带的2.1.4 ;官网上的最新版本为2.3b4

二、交叉编译cups

下载cups ,利用./configure 进行配置

./configure CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ LD=aarch64-linux-gnu-ld RANLIB=aarch64-linux-gnu-ranlib AR=aarch64-linux-gnu-ar --target=arm-linux --host=arm-linux --build=x86 LDFLAGS=-L/home/rudis/Ibox3399/x3399_marshmallow/out/release/linuxmount/usr/lib --disable-avahi --disable-gnutls --disable-gssapi --disable-dbus

解释:这里cc cxx..等指向自己的交叉编译器的位置,LDFLAGS=-L后面的目录指向自己文件系统的目录。--disable-avahi 等禁用相关的链接库。如果不想放开的话,需要把对应的头文件放到本地目录里。

Make

错误提示:在编译过程中可能会出现链接库的问题,由于makefile文件有点问题,可以把相应丢失的库文件拷贝到当前目录的 ./cups目录下,并改名为标准名称

如果在编译中出现 -rpath提示,将对应的库文件拷贝到./cups目录下来,并在Makefilelibs= 后添加对应的丢失的库链接。

make install DSTROOT=${PWD}/_install

生成的文件在_install里,将文件放到开发板的对应位置。

/etc/init.d/cups start

如果出现配置文件错误的话,修改/etc/cups/cupsd.conf 下的group 中,将lpadmin删除,启动

/etc/init.d/cups start

这里更加推荐使用buildroot自带的cups进行配置,虽然上述交叉编译能够成功,但是报错很多,运行起来也不稳定。buildrootnettool勾选cups,即可自动部署cups。如果启动失败对照上面的修改grouplpadmin即可。

也可以参考 buildroot对cups的配置文件:

./configure --target=aarch64-buildroot-linux-gnu --host=aarch64-buildroot-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --program-prefix= --disable-gtk-doc --disable-gtk-doc-html --disable-doc --disable-docs --disable-documentation --with-xmlto=no --with-fop=no --disable-dependency-tracking --enable-ipv6 --disable-static --enable-shared --without-perl --without-java --without-php --disable-gssapi --libdir=/usr/lib --disable-systemd --enable-dbus --enable-gnutls --without-python --disable-libusb --disable-libpaper --enable-avahi

三、添加打印机

首先可以通过ubuntucups进行打印测试,获取对应打印机ppd文件,将此ppd文件放到/usr/share/cups/model

lpadmin -p printname -E -v local -m ppdfile

例如:

lpadmin -p xhero -E -v ipp://192.168.1.244/ipp/ -m pxlcolor.ppd

其中 xhero就是此打印机的名称

利用

lpoption -d printname

设置默认打印机。

利用命令

lp -o media=A4 printfile

进行A4纸打印。

测试打印机时,利用了一个pdf文件进行打印。结果提示文件不支持。这是因为cups只是一个打印机伺服器,并不能进行格式的转换。没有对应的过滤器,cups是无法将原文件转换成打印机能够识别的文件的。要进行格式转换还需要另外两个工具,cups-filter ghost script Cups-filter 会调用ghost scriptpdf进行格式转换为pcl文件,再发送给对应的打印机进行打印。接下来交叉编译 cups-filter ghost script

转载请注明原文地址: https://www.6miu.com/read-2619677.html

最新回复(0)