ラズパイはARM系のCPUなので、INTEL系のCPU用にビルドされたバイナリはそのままでは動きません。
そこでエミュレーターを使ってみます。
今回使ってみたのは、 https://github.com/ptitSeb/box86 です。
ラズパイ4用のビルド方法が書いてあるので、その通りにして https://github.com/ptitSeb/box86/blob/master/COMPILE.md
途中、cmake がインストールされてないエラーが出たので、aptでインストールしています。
$ git clone https://github.com/ptitSeb/box86.git
$ cd box86/
$ mkdir build
$ cd build/
$ cmake .. -DRPI4=1
$ sudo apt-get install cmake -y
$ cmake .. -DRPI4=1
$ make
$ sudo make install
これで/usr/local/bin/box86
にインストールされます。
動作確認は、goでクロスコンパイルしてi386用のバイナリを作ってみます。
$ sudo apt-get install golang vim -y
$ mkdir gohello
$ cd gohello/
$ vim main.go
$ cat main.go
package main
import "fmt"
func main() {
fmt.Printf("Hello World.")
}
$ go run main.go
Hello World.
$ GOOS=linux GOARCH=386 go build main.go
$ file main
main: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, Go BuildID=EDrAt9-MHQE9T80DhygY/f6YeSHOLOx8X7d-HX9hD/-l5jnyNTlVPej-xQqgNa/FWh0zT5aaqTLXuK-Kv2V, not stripped
$ ./main
-bash: ./main: バイナリファイルを実行できません: 実行形式エラ
$ box86 ./main
Dynarec for ARM, with extension: HALF FAST_MULT EDSP NEON VFPv4 IDIVA
Using default BOX86_LD_LIBRARY_PATH: ./:lib/:lib32/:x86/
Using default BOX86_PATH: ./:bin/
Counted 26 Env var
Looking for ./main
Warning, set_thread_area syscall unsupported yet
Unsupported Int 03h
ということで、まだサポートされていない機能があるようで動かせませんでした。 残念。