Saya mencoba menjalankan printer USB SNBC di Raspberry Pi2.
Untuk itu saya perlu menyalin biner filter dari printer USB SNBC ke /usr/lib/cups/filter
. Tapi filter biner dikompilasi menggunakan prosesor x86 (Produsen tidak memiliki minat untuk mendukung lengan) di mana seperti yang saya gunakan armv7
. Saya tahu itu tidak akan berhasil tetapi untuk rasa ingin tahu saya mencoba dan cangkir mengatakan /usr/lib/cups/filter/rasterorp3150 failed
.
Saya mencari solusi di internet dan orang-orang menyarankan untuk menggunakan Qemu. Tapi itu untuk platform x86 lengkap untuk dipersenjatai. Apakah ada cara untuk mengkonversi biner x86 ke binary arm dengan cara yang tidak rumit?
Omong-omong, apakah mengkonversi biner x86 menggunakan hexedit
alat ke armv7
biner setara adalah ide yang bagus? ( opcode
konversi)
Jika demikian, adakah yang bisa memberikan ide tentang cara melakukannya?
Jawaban:
Anda tidak dapat dengan mudah mengkonversi biner x86 ke ARM. Jika Anda tidak bisa mendapatkan kode sumber, atau binari ARM dari pabrikan, dan Anda benar-benar ingin menggunakan printer dengan Pi2 Anda, maka pendekatan Qemu adalah yang benar dalam kasus ini, meskipun kemungkinan akan sangat lambat . Qemu melakukan emulasi sistem penuh tetapi juga bekerja dengan sangat baik untuk emulasi proses tunggal.
Saya berasumsi Anda memiliki semacam turunan Debian pada Pi2 Anda (saya tidak yakin ini akan bekerja dengan Raspbian), dan bahwa biner yang Anda miliki adalah untuk
i386
(jika 64-bit, gunakanamd64
saja). Mulai dengan menambahkani386
sebagai arsitektur asing:Kemudian jalankan
ldd
pada biner dan tambahkan perpustakaan yang dibutuhkan; khasdan apa pun dengan
:i386
akhiran yang ditambahkan. Pastikan ini tidak menghapus paket yang diinstal; semoga semua yang Anda butuhkan adalah multi-enabled-enabled. (Kalau tidak, sisanya tidak akan bekerja.)Setelah Anda selesai melakukannya, instal
qemu-user-static
jika belum diinstal (besertabinfmt-support
rekomendasinya); maka Anda dapat menggunakanqemu-i386-static
untuk menjalankan program Anda:Sebenarnya berkat
binfmt-support
itu harus dijalankan langsung (seperti yang ditunjukkan oleh Toby Speight ):(
binfmt-support
akan menggunakan Qemu untuk menjadikan pekerjaan ini transparan.)Jika Anda tidak ingin menggunakan
binfmt-support
, pindahrasterorp3150
:dan instal skrip yang berisi
sebagai
/usr/lib/cups/filter/rasterorp3150
.Jika mau, Anda dapat mengatur chroot untuk semua ini; lihat
debootstrap
dan--foreign
opsinya (chroot dapat diatur untuk menggunakan Qemu secara otomatis).sumber
apt update
setelah menambahkan lengkungan i386.i386
binari. Ini hanya berfungsi dengan arsitektur yang didukung di distro yang Anda gunakan.Terima kasih atas ulangan terperinci Anda.
Saya menggunakan Rasbian OS, dan menambahkan arsitektur i386 gagal di raspbian selama pembaruan sudo apt-get. Bisakah saya mengunduh paket i386 secara terpisah untuk raspbian dan menginstal ?. Jika demikian, Anda dapat membagikan tautan apa saja untuk diunduh.
Dapatkah saya menyalin filter .so file dari i386 (Linux mint berjalan di x86) dan menempelkan di jalur yang sesuai di raspbain dan menggunakan Qemu untuk menjalankan filter?
Berikut ini adalah gema ldd dari filter:
Salam, Nash
sumber