Вы не можете легко преобразовать двоичный файл 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).