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에 어떤 종류의 데비안 파생물을 가지고 있고(이것이 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를 사용하도록 설정할 수 있습니다).