Go Commands - build

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

Depending on the arguments, go build compiles packages or individual files, treating them as part of a single package.

The artifacts are written into the current directory, unless the -o option is used.

TODO

Syntax

go build [-o output] [-i] [build flags] [packages]

Building an Executable

If the arguments are a list of .go files, build treats them as a list of source files specifying a single package.

If that package is "main", build writes the resulting executable to an output file named after the first source file ('go build a.go b.go' writes an "a" executable) or the source code directory ('go build a/b' writes 'b'). The output is overridden by -o flag.

Building a Library

If the arguments are a list of import paths, build compiles the packages named by the import paths, along with their dependencies, but it does not install the results.

-o

-o flag can only be used when compiling a single package or building an executable. It forces build to write the executable or object file to the given file name, instead of the default behavior.

Shared Tool Flags

Shared Flags



When compiling multiple packages or a single non-main package, build compiles the packages but discards the resulting object, serving only as a check that the packages can be built.


The -i flag installs the packages that are dependencies of the target.


For more about specifying packages, see 'go help packages'. For more about where packages and binaries are installed, run 'go help gopath'. For more about calling between Go and C/C++, run 'go help c'.

Note: Build adheres to certain conventions such as those described by 'go help gopath'. Not all projects can follow these conventions, however. Installations that have their own conventions or that use a separate software build system may choose to use lower-level invocations such as 'go tool compile' and 'go tool link' to avoid some of the overheads and design decisions of the build tool.

See also: go install, go get, go clean.


go build

builds the current package.

A specific package can be also built:

go build <package-path-string-literal>

where the <package-path-string-literal> is the same literal used by the import statement.

Wildcards can be specified in the package specifiers. A three period indicates a pattern matching any string:

go build something/...

Building an Executable

Building an Executable