Raspberry Pi2でSNBC USBプリンターを実行しようとしています。
そのために、SNBC USBプリンターのフィルターバイナリを_/usr/lib/cups/filter
_にコピーする必要があります。しかし、フィルタバイナリは、x86プロセッサ(メーカーはarmをサポートする必要はありません)を使用してコンパイルされますが、ここでは_armv7
_を使用しています。私はそれが機能しないことを知っていますが、好奇心のために私が試したところ、cupsは_/usr/lib/cups/filter/rasterorp3150 failed
_と言っています。
私はインターネットで解決策を探しました、そして人々はQemuを使うことを勧めます。しかし、これは完全なx86からプラットフォームをアームするためのものです。簡単で簡単な方法でx86バイナリをarmバイナリに変換する方法はありますか?
ところで、hexedit
ツールを使用してx86バイナリを同等の_armv7
_バイナリに変換するのは良い考えですか? (opcode
変換)
もしそうなら、誰でもそれを行う方法についていくつかのアイデアを与えることができますか?
x86バイナリをARMに簡単に変換することはできません。ソースコードを入手できない場合、またはARMバイナリを製造元から入手し、実際にPi2でプリンターを使用したい場合は、Qemuアプローチが適切です。 Qemuは完全なシステムエミュレーションを実行しますが、シングルプロセスエミュレーションでも非常にうまく機能します。
私はあなたがあなたのPi2にある種のDebian派生物を持っていると仮定しています(これがRaspbianで動作するかどうかはわかりません)、そしてあなたが持っているバイナリはi386
用です(64ビットの場合は_を使用してください) [SOMECODE] _代わりに)。まず、AMD64
を外部アーキテクチャとして追加します。
i386
次に、バイナリでldd
を実行し、必要なライブラリを追加します。通常
Sudo dpkg --add-architecture i386
Sudo apt-get update
その他、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を自動的に使用するように設定できます)。
詳細なリプレイをありがとう。
Rasbian OSを使用していますが、Sudo apt-getの更新中に、raspbianでi386アーキテクチャの追加が失敗します。 Raspbian用のi386パッケージを個別にダウンロードしてインストールできますか?もしそうなら、ダウンロードするリンクを共有できますか?.
フィルター依存の.soファイルをi386(x86で実行されているLinux mint)からコピーして、raspbainの適切なパスに貼り付け、Qemuを使用してフィルターを実行できますか?
次に、フィルターのlddエコーを示します。
linux-gate.so.1 => (0xb779c000)
libcups.so.2 => /usr/lib/i386-linux-gnu/libcups.so.2 (0xb7716000)
libcupsimage.so.2 => /usr/lib/i386-linux-gnu/libcupsimage.so.2 (0xb770d000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb755c000)
libgssapi_krb5.so.2 => /usr/lib/i386-linux-gnu/libgssapi_krb5.so.2 (0xb7517000)
libgnutls.so.26 => /usr/lib/i386-linux-gnu/libgnutls.so.26 (0xb7451000)
libavahi-common.so.3 => /usr/lib/i386-linux-gnu/libavahi-common.so.3 (0xb7443000)
libavahi-client.so.3 => /usr/lib/i386-linux-gnu/libavahi-client.so.3 (0xb7431000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb7414000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb73fa000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb73b4000)
/lib/ld-linux.so.2 (0xb779d000)
libkrb5.so.3 => /usr/lib/i386-linux-gnu/libkrb5.so.3 (0xb72f6000)
libk5crypto.so.3 => /usr/lib/i386-linux-gnu/libk5crypto.so.3 (0xb72c6000)
libcom_err.so.2 => /lib/i386-linux-gnu/libcom_err.so.2 (0xb72c0000)
libkrb5support.so.0 => /usr/lib/i386-linux-gnu/libkrb5support.so.0 (0xb72b4000)
libgcrypt.so.11 => /lib/i386-linux-gnu/libgcrypt.so.11 (0xb722d000)
libtasn1.so.6 => /usr/lib/i386-linux-gnu/libtasn1.so.6 (0xb7219000)
libp11-kit.so.0 => /usr/lib/i386-linux-gnu/libp11-kit.so.0 (0xb71dd000)
libdbus-1.so.3 => /lib/i386-linux-gnu/libdbus-1.so.3 (0xb7191000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb718c000)
libkeyutils.so.1 => /lib/i386-linux-gnu/libkeyutils.so.1 (0xb7188000)
libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xb7170000)
libgpg-error.so.0 => /lib/i386-linux-gnu/libgpg-error.so.0 (0xb716b000)
libffi.so.6 => /usr/lib/i386-linux-gnu/libffi.so.6 (0xb7163000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb715a000)
よろしく、ナッシュ