LoginSignup
4
4

More than 5 years have passed since last update.

Go 1.10にMIPS32 softfloat対応が来たよー

Last updated at Posted at 2018-10-07

Go 1.10から32bit MIPSの「実用的な」バイナリが生成できるようになった

表題の通りですが、Go 1.10でついに32bit MIPSアーキテクチャで動くバイナリが吐けるようになりました。

正確に言うとGo 1.8から32bit MIPSのバイナリを出力することはできていたのですが、必ず浮動小数点数演算命令を含んだバイナリ(=hardfloat)を出力していたため、浮動小数点数演算ユニット(FPU)なしの環境では動かないという問題がありました。一方で、32bit MIPSはFPUなしのことが多いため、Go 1.8が吐いた32bit MIPSバイナリが動く環境はかなり少ない状況でした(参考:「Go 1.8のMIPS32バイナリをルータ上で動かしてみた(成功編) - Qiita」)

その後FPUなしの環境向けにFPU命令を含まないバイナリも吐けるような開発が進みましたが、Go 1.9リリースには間に合いませんでした(参考: 「GoのMIPS32 soft-float対応が来たぞー(1.9に入るとは言っていない) - Qiita」)。これが遂に Go 1.10で正式採用されたというわけです。

32bit MIPSバイナリのビルド方法

MIPS32のsoftfloatバイナリのビルド方法はGo 1.8.3用パッチと同じで、GOARCH=mips GOMIPS=softfloatを付けてビルドすれば手近に転がっているMIPSマシンで動くバイナリが得られます。

$ GOOS=linux GOARCH=mips GOMIPS=softfloat go build hello.go

わざわざパッチを当てなくても、デフォルトインストールされているGoでMIPSバイナリが生成できるのは素晴らしいですね。

補足

すでに時期を逃した感のある話題なんですが、下書きから発掘したので記事にしておきます。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4