Я пытаюсь запустить принтер SNBC USB на Raspberry Pi2.
Для этого мне нужно скопировать двоичный файл фильтра USB-принтера SNBC на /usr/lib/cups/filter
. Но двоичный файл фильтра скомпилирован с использованием процессора x86 (производитель не заинтересован в поддержке arm), где я использую armv7
. Я знаю, что это не будет работать, но для любопытства я попробовал, и чашки говорят /usr/lib/cups/filter/rasterorp3150 failed
.
Я искал решения в Интернете, и люди предлагают использовать Qemu. Но это для полного x86, чтобы вооружить платформу. Есть ли способ легко преобразовать двоичный файл x86 в бинарный файл?
Кстати, является ли хорошей идеей преобразование двоичного файла x86 с использованием hexedit
инструмента в эквивалентный armv7
двоичный файл? ( opcode
преобразование)
Если да, может кто-нибудь дать представление о том, как это сделать?
Ответы:
Вы не можете легко преобразовать двоичный файл x86 в ARM. Если вы не можете получить исходный код или двоичный файл ARM от производителя и действительно хотите использовать принтер с Pi2, тогда подход Qemu является правильным в этом случае, хотя, скорее всего, он будет очень медленным , Qemu выполняет полную эмуляцию системы, но она также очень хорошо работает для эмуляции одного процесса.
Я предполагаю, что у вас есть какая-то производная Debian на вашем Pi2 (я не уверен, что это будет работать с Raspbian), и что у вас есть бинарный файл
i386
(если он 64-битный, используйтеamd64
вместо этого). Начнем с добавленияi386
в качестве чужой архитектуры:Затем запустите
ldd
двоичный файл и добавьте все необходимые библиотеки; типичнои все остальное с
:i386
добавленным суффиксом. Убедитесь, что это не удаляет установленный пакет; Надеемся, что все, что вам нужно, поддерживает многоархив (В противном случае остальные не будут работать.)Как только вы это сделаете, установите,
qemu-user-static
если он еще не установлен (вместе с егоbinfmt-support
рекомендацией); тогда вы можете использоватьqemu-i386-static
для запуска вашей программы:На самом деле благодаря
binfmt-support
этому должен работать напрямую (как указал Тоби Спейт ):(
binfmt-support
будет использовать Qemu для прозрачной работы.)Если вы не хотите использовать
binfmt-support
, отойдитеrasterorp3150
:и установите скрипт, содержащий
как
/usr/lib/cups/filter/rasterorp3150
.Если вы хотите, вы можете установить chroot для всего этого; смотрите
debootstrap
и его--foreign
опцию (chroot может быть настроен для автоматического использования Qemu).источник
apt update
после добавления арки i386.i386
двоичные файлы. Это работает только с архитектурами, которые поддерживаются в используемом вами дистрибутиве.Спасибо за ваш подробный повтор.
Я использую Rasbian OS, и добавление архитектуры i386 завершается неудачно в raspbian во время обновления sudo apt-get. Могу ли я скачать пакет i386 отдельно для raspbian и установить? Если это так, вы можете поделиться ссылками на скачивание.
Могу ли я скопировать зависимые от фильтров файлы .so из i386 (Linux mint работает на x86) и вставить в соответствующие пути в raspbain и использовать Qemu для запуска фильтра?
Следующее является ldd echo фильтра:
С уважением, Нэш
источник