Golang 編譯給 Raspberry PI (ARM) 執行的程式

Golang 的程式寫好後,一般在 amd64 的環境編譯、執行都很簡單,但是遇到 ARM 的就需要另外指定一下。

go build example.go # 產生 example 執行檔,丟到 ARM 的機器上執行,會如下述訊息:

  • $ ./example
    -bash: ./example: cannot execute binary file: Exec format error

Golang 編譯給 Raspberry PI (ARM) 執行的程式

Go 官方文件有寫到,若要 Compile 給 ARM,有幾個參數要設定

設定 $GOOS 和 $GOARCH 的環境參數 (上述文件找 「$GOOS and $GOARCH」和 「$GOARM」的設定參數)

GOOS、GOARCH、GOARM 參數設定值

  • $GOOS:linux
  • $GOARCH:arm
  • $GOARM
    • GOARM=5: use software floating point; when CPU doesn't have VFP co-processor
    • GOARM=6: use VFPv1 only; default if cross compiling; usually ARM11 or better cores (VFPv2 or better is also supported)
    • GOARM=7: use VFPv3; usually Cortex-A cores

Go build 的參數

  • $ GOOS=linux GOARCH=arm GOARM=7 go build example.go # build for ARM
  • $ GOOS=linux GOARCH=arm GOARM=7 go build -v example.go # 想看詳細可加上 -v
  • $ scp example raspberrypi.example.com: # 再去執行即可

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料