主要观点:作者将 Nelko PL70E-BT 打印机连接到 FreeBSD 系统的计算机,因 Nelko 未提供 FreeBSD 驱动,需通过 PostScript Printer Descriptions (.ppd)文件配置打印机,过程中遇到自定义二进制文件 rastertolabel不兼容问题,通过启用 FreeBSD 的 Linux 二进制兼容层、使用 PatchELF 工具修改二进制可执行文件的运行路径等一系列操作,最终成功使打印机在 CUPS 中打印出所需的 shipping labels。
关键信息:
- Nelko 仅提供 Windows、MacOS 和 Linux 的驱动包,作者使用 FreeBSD 系统。
- 从 Nelko 的 Linux 系统安装包中获取.ppd 文件和二进制文件 rastertolabel。
- rastertolabel为 Linux 系统设计,与 FreeBSD 系统不兼容,动态链接器遇到错误,缺少共享库对象 libm.so.6和 libstdc++.so.6。
- 使用 debootstrap 安装 Ubuntu userland 以获取 glibc 文件,通过 PatchELF 工具修改 rastertolabel的运行路径,解决链接错误。
- 修正 /compat/ubuntu/lib64/ld-linux-x86-64.so.2 的 symlink 指向正确路径,成功打印。
重要细节: - 使用
ar x [file.deb]
命令解压.deb 文件,tar
提取文件。 - 通过
file
命令查看文件类型,如file /usr/local/libexec/cups/filter/Nelko/Filter/rastertolabel
查看 rastertolabel 的类型。 - 使用
ldd
命令列出动态对象依赖,如ldd /usr/local/libexec/cups/filter/Nelko/Filter/rastertolabel
。 - 使用 PatchELF 工具修改运行路径,如
patchelf --set-rpath /compat/ubuntu/lib/x86_64-linux-gnu:/compat/ubuntu/lib64 /usr/local/libexec/cups/filter/Nelko/Filter/rastertolabel
。 - 创建新的 symlink 修正链接错误,如
sudo ln -sf../lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /compat/ubuntu/lib64/ld-linux-x86-64.so.2
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。