Non è possibile convertire facilmente un binario x86 in ARM. Se non riesci a ottenere il codice sorgente o un binario ARM dal produttore e vuoi davvero usare la stampante con il tuo Pi2, in questo caso l'approccio Qemu è quello corretto, anche se probabilmente sarà molto lento . Qemu esegue l'emulazione di sistema completa ma funziona anche molto bene per l'emulazione a processo singolo.
Suppongo che tu abbia una sorta di derivata Debian sul tuo Pi2 (non sono sicuro che funzionerà con Raspbian) e che il binario che hai è i386
(se è a 64 bit, usa amd64
invece). Inizia aggiungendo i386
come un'architettura straniera:
sudo dpkg --add-architecture i386
sudo apt-get update
Quindi eseguire ldd
il file binario e aggiungere tutte le librerie richieste; tipicamente
sudo apt-get install libc6:i386
e qualsiasi altra cosa con il :i386
suffisso aggiunto. Assicurarsi che ciò non rimuova alcun pacchetto installato; speriamo che tutto ciò di cui hai bisogno sia abilitato per multiarch. (Altrimenti il resto non funzionerà.)
Una volta che lo hai fatto, installa qemu-user-static
se non è già installato (insieme alla sua binfmt-support
raccomandazione); quindi è possibile utilizzare qemu-i386-static
per eseguire il programma:
qemu-i386-static /usr/lib/cups/filter/rasterorp3150
Infatti grazie ad binfmt-support
esso dovrebbe essere eseguito direttamente (come sottolineato da Toby Speight ):
/usr/lib/cups/filter/rasterorp3150
( binfmt-support
utilizzerà Qemu per farlo funzionare in modo trasparente.)
Se non vuoi usare binfmt-support
, rasterorp3150
allontanati:
sudo mv /usr/lib/cups/filter/rasterorp3150 /usr/lib/cups/filter/rasterorp3150.x86
e installa uno script contenente
#!/bin/sh
exec qemu-i386-static /usr/lib/cups/filter/rasterorp3150.x86 "$@"
come /usr/lib/cups/filter/rasterorp3150
.
Se preferisci, puoi impostare un chroot per tutto questo; vedi debootstrap
e la sua --foreign
opzione (il chroot può essere impostato per usare Qemu automaticamente).