Raspberry Pi2でSNBC USBプリンタを実行しようとしています。
これを行うには、SNBC USBプリンタのフィルタバイナリを/usr/lib/cups/filter
。armv7
ダメだろうけど、気になって試してみた、カップが言った/usr/lib/cups/filter/rasterorp3150 failed
。
私はインターネットで解決策を見つけ、人々はQemuの使用を提案しました。ただし、これはx86プラットフォーム全体のためのものです。 x86バイナリをarmバイナリに簡単に変換する方法はありますか?
しかし、x86バイナリを同等のバイナリhexedit
に変換するツールを使用するのは良い考えですか?armv7
(opcode
変換)
では、誰もがこれを行う方法についてのアイデアを提供できますか?
答え1
あなたは簡単に切り替えることができません。x86ARMのバイナリ。製造元からソースコードや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
直接実行しなければならないので(指示どおり)トビースペート):
/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を有効にできます)。