コマンド - Go
最終更新日: 2026-07-25
TOP(About this memo)) > 一覧(Go) > 標準ツール(cmd/go)
cmd/go ドキュメント
https://pkg.go.dev/cmd/go#section-documentation
go build
バイナリ
go buildの際のコンパイル対象
- 前提
- コンパイルしたファイルの依存先(import先)もすべてコンパイルされ、ひとつのバイナリになる。
- 依存していないファイルはコンパイルされないので、その分はバイナリサイズが増えない。
main.go // aaaを参照している。
aaa/a.go // main.goコンパイル時にコンパイル対象に含まれる。
bbb/b.go //mainから参照されていない。main.goコンパイル時にコンパイル対象に含まれない。
go.mod // ここに a.goやb.goが使っている外部モジュールが含まれているとして、main.goコンパイル時にはa.goが使っている外部モジュールのみコンパイルされる。
- go build
- go build ./xxx
- xxxディレクトリ直下の*.goファイルがコンパイルされる
- go build main.go
- main.goがコンパイルされる。注意点として、同ディレクトリ内の他のgoファイルはコンパイルされないので注意。
- go build main.go server.go
- main.goとserver.goがコンパイルされる。
何もしないmain.goファイルをbuildすると、バイナリサイズは1.2MBくらいだった。
-rwxr-xr-x 1 user staff 1177168 Mar 24 08:15 aaa
ビルドタグ
// +build foo
go build -tags foo
ldflags
- sやwを指定することで、シンボルテーブルやデバッグに関する情報を取り除き、ビルドサイズを小さくできる。
- -ldflags=”-s -w”
-s
Omit the symbol table and debug information.
-w
Omit the DWARF symbol table.
go fmt(gofmt)
go generate