7.4 よく使われるビルドフラグ
Goは go build
としてビルドするときは、さまざまなフラグを用いてビルドできます。本節では本番環境向けにビルドするときに明日から使えるオプションを紹介します。以下のプログラムをビルドすることを考えてみます。
package main
import "fmt"
var version string
func main() {
fmt.Printf("Hello 世界, version = %s", version)
}
本番環境向けにビルドするとき、以下のようにオプションを付与してビルドできます。
$ CGO_ENABLED=0 go build -trimpath -ldflags '-s -w -X main.version=1.0.0' main.go
それぞれのオプションがどのようなものなのか説明します。
7.4.1 バイナリサイズを小さくする
Goではランタイムに合わせたシングルバイナリを作成できます。本番環境用に配布する実行バイナリは小さいに越したことはありません。go build
時に-ldflags
フラグを付与し go build -ldflags '-s -w' main.go
などとしてビルドすることで、バイナリサイズを小さくできます。
筆者の環境でビルドしたところ、以下のような違いがありました。
package main
import "fmt"
func main() {
fmt.Println("Hello 世界")
}
|
|
---|---|
1.9MiB |
1.3MiB |
フラグを付与するだけでバイナリサイズが小さくなるので、本番環境向けのビルドは積極的に ...
Get 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.