JH_REYN 2024-06-26 16:46 采纳率: 0%
浏览 46
已结题

cups交叉编译后移植到tina sdk的t113,只需要实现usb驱动打印机,打印pdf文件

tina sdk cups移植记录

1、make menuconfig 中使能usb 打印支持

2、交叉编译配置 cups 1.3.9

./configure --prefix=/ --host=arm-openwrt-linux CC=/home/meetyoo/t113/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-gcc CXX=CXX=/home/meetyoo/t113/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-g++ --disable-gssapi --disable-dbus --disable-avahi --disable-gnutls --disable-libusb --disable-launchd --disable-systemd
3、编译安装
sed -i '22s/locale man monitor/locale monitor/' ./Makefile
make
Make install=/home/meetyoo/t113/Tina-Linux/package/busybox-init-base-files/busybox-init-base-files/

4、在busybox-init-base-files中删除var文件夹
5、编译tina sdk :make mboot pack,并下载镜像到开发板
6、开发板中调试:
修改文件etc/init.d/cups
pid=ps ax | awk '{if (match($5, ".*/cupsd$") || $5 == "cupsd") print $1}'修改成
pid=ps w | awk '{if (match($5, ".*/cupsd$") || $5 == "cupsd") print $1}'

启动cups,后报错
root@TinaLinux:/# ./etc/init.d/cups start
cupsd: Child exited with status 1!
cups: unable to start scheduler.

尝试 vi etc/cups/cupsd.conf 修改为如下但未果,启动依旧如上报错

Only listen for connections from the local machine.

Listen 127.0.0.1:631
Listen /var/run/cups/cups.sock

  • 写回答

26条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-26 16:46
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    要解决这个问题,我们首先需要确保已经正确安装了CUPS服务并成功配置了USB打印机支持。以下是详细的步骤:

    步骤 1:确认CUPS已安装且运行良好

    检查CUPS服务是否正常运行:

    sudo service cups status
    

    如果服务正在运行,输出应该显示 running 或者 active. 如果没有运行,则需要手动启动。

    步骤 2:配置USB打印机

    在CUPS中添加一个新的打印机设备。

    1. 打开/etc/cups/conf/目录下的cupsd.conf文件(通常位于/etc/cups/conf/)。
    2. 在文件末尾添加以下内容:
    Listen 127.0.0.1:631
    Listen /var/run/cups/cups.sock
    

    保存更改并退出编辑模式。

    步骤 3:配置USB驱动

    /usr/share/doc/cups/examples/usb目录中找到并复制cups-usb-printer-example.c文件到/usr/share/cups/目录下。 这将包含用于创建USB打印机的脚本。

    步骤 4:编写并测试USB打印机驱动程序

    使用文本编辑器(例如nano或vi)打开cups-usb-printer-example.c文件,并根据需要进行修改。这里是一个简单的例子:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) {
        if(argc != 2) {
            fprintf(stderr,"Usage: %s device\n", argv[0]);
            exit(1);
        }
        int fd = open(argv[1], O_RDWR);
        if(fd < 0){
            perror("open");
            return 1;
        }
        write(fd, "hello world", strlen("hello world"));
        close(fd);
        return 0;
    }
    

    在这个例子中,device参数是USB设备的路径。

    步骤 5:编译USB打印机

    使用以下命令编译USB打印机驱动程序:

    make usb-printer
    

    这将生成一个名为/usr/local/lib/cups/cups-usb-printer.so的可执行文件。

    步骤 6:打包CUPS镜像

    使用以下命令打包CUPS镜像:

    sudo make mboot pack
    

    这将在/usr/local/lib/cups/目录下生成一个名为cups.tar.gz的包。

    步骤 7:安装CUPS镜像到开发板

    使用以下命令从CUPS镜像安装CUPS服务到开发板:

    sudo cp cups.tar.gz /dev/mmcblk0p1
    sudo mount /dev/mmcblk0p1 /mnt/cups
    sudo dpkg -i cups.tar.gz
    sudo umount /mnt/cups
    

    这个过程依赖于您的开发板的具体型号和硬件设置。确保正确格式化/dev/mmcblk0p1分区。

    步骤 8:加载CUPS服务

    重启开发板,然后在终端中输入:

    sudo systemctl enable cups.service
    sudo systemctl start cups.service
    

    步骤 9:验证USB打印机工作

    通过SSH登录开发板,进入CUPS服务目录:

    cd /mnt/cups
    

    然后运行以下命令以查看USB打印机状态:

    sudo cupsctl list
    

    如果看到打印机列表中的USB打印机,那么CUPS服务已经成功配置并可以使用USB打印机了。

    注意:上述步骤可能因您的具体硬件和操作系统而有所不同。如果您遇到任何问题,请查阅相关文档或论坛寻求帮助。祝您编程愉快!

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月4日
  • 创建了问题 6月26日

悬赏问题

  • ¥60 db2move nlzxams import 导出db2备份数据报错
  • ¥15 关于#python#的问题:全文总结功能咨询
  • ¥15 俄罗斯方块中无法同时消除多个满行
  • ¥15 c#转安卓 java html
  • ¥15 os.listdir文件路径找不到
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
  • ¥50 医院HIS系统代码、逻辑学习
  • ¥30 docker离线安装mysql报错,如何解决?