Вы не можете легко преобразовать двоичный файл x86 в ARM. Если вы не можете получить исходный код или двоичный файл ARM от производителя и действительно хотите использовать принтер с Pi2, тогда подход Qemu является правильным в этом случае, хотя, скорее всего, он будет очень медленным , Qemu выполняет полную эмуляцию системы, но она также очень хорошо работает для эмуляции одного процесса.
Я предполагаю, что у вас есть какая-то производная Debian на вашем Pi2 (я не уверен, что это будет работать с 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этому должен работать напрямую (как указал Тоби Спейт ):
/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).