Ви не можете легко конвертувати двійковий x86 в ARM. Якщо ви не можете отримати вихідний код або двійковий файл ARM від виробника, і ви дійсно хочете використовувати принтер разом із Pi2, тоді підхід Qemu є правильним у цьому випадку, хоча, ймовірно, це буде дуже повільно . Qemu робить повну емуляцію системи, але вона також дуже добре працює для емуляції одного процесу.
Я припускаю, що у вас на Pi2 є якась похідна Debian (я не впевнений, що це буде працювати з Raspbian), і те, що у вас є бінарне i386
(якщо це 64-бітове, використовуйте amd64
замість цього). Почніть з додавання i386
як зарубіжної архітектури:
sudo dpkg --add-architecture i386
sudo apt-get update
Потім запустіть ldd
бінарний файл і додайте необхідні бібліотеки; як правило
sudo apt-get install libc6:i386
і що-небудь ще із :i386
доданим суфіксом. Переконайтеся, що це не видаляє встановлений пакет; сподіваємось, що все, що вам потрібно, підтримується мультиархом. (Інакше решта не працюватиме.)
Щойно ви зробите це, встановіть, qemu-user-static
якщо він ще не встановлений (разом з його binfmt-support
рекомендацією); тоді ви можете використовувати qemu-i386-static
для запуску програми:
qemu-i386-static /usr/lib/cups/filter/rasterorp3150
Насправді завдяки цьому binfmt-support
він повинен працювати безпосередньо (на що вказував Toby Speight ):
/usr/lib/cups/filter/rasterorp3150
( binfmt-support
буде використовувати Qemu для прозорості цієї роботи.)
Якщо ви не хочете користуватися binfmt-support
, відсуньтесь rasterorp3150
:
sudo mv /usr/lib/cups/filter/rasterorp3150 /usr/lib/cups/filter/rasterorp3150.x86
і встановити скрипт, що містить
#!/bin/sh
exec qemu-i386-static /usr/lib/cups/filter/rasterorp3150.x86 "$@"
як /usr/lib/cups/filter/rasterorp3150
.
Якщо ви хочете, ви можете встановити chroot для всього цього; див. debootstrap
та її --foreign
варіант (chroot може бути налаштований так, щоб автоматично використовувати Qemu).