summaryrefslogtreecommitdiffstats
path: root/man/go-build.1
diff options
context:
space:
mode:
Diffstat (limited to 'man/go-build.1')
-rw-r--r--man/go-build.1216
1 files changed, 216 insertions, 0 deletions
diff --git a/man/go-build.1 b/man/go-build.1
new file mode 100644
index 0000000..22f0186
--- /dev/null
+++ b/man/go-build.1
@@ -0,0 +1,216 @@
+.\" Hey, EMACS: -*- nroff -*-
+.TH GO-BUILD 1 "2022-08-02"
+.\" Please adjust this date whenever revising the manpage.
+.SH NAME
+go-build \- compile the packages named by the import paths
+.SH SYNOPSIS
+.B go build
+.RB [ \-o
+.IR output ]
+.RI [ "build flags" ]
+.RI [ packages ]
+.SH DESCRIPTION
+Build compiles the packages named by the import paths,
+along with their dependencies, but it does not install the results.
+.P
+If the arguments to build are a list of .go files from a single directory,
+build treats them as a list of source files specifying a single package.
+.P
+When compiling packages, build ignores files that end in \(oq_test.go\(cq.
+.P
+When compiling a single main package, build writes
+the resulting executable to an output file named after
+the first source file (\(oqgo build ed.go rx.go\(cq writes \(oqed\(cq or \(oqed.exe\(cq)
+or the source code directory (\(oqgo build unix/sam\(cq writes \(oqsam\(cq or \(oqsam.exe\(cq).
+The \(oq.exe\(cq suffix is added when writing a Windows executable.
+.P
+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.
+.P
+The \-o flag forces build to write the resulting executable or object
+to the named output file or directory, instead of the default behavior described
+in the last two paragraphs. If the named output is an existing directory or
+ends with a slash or backslash, then any resulting executables
+will be written to that directory.
+.P
+The \-i flag installs the packages that are dependencies of the target.
+.br
+The \-i flag is deprecated. Compiled packages are cached automatically.
+.SH OPTIONS
+The build flags are shared by the build, clean, get, install, list, run,
+and test commands:
+.TP
+.B \-a
+force rebuilding of packages that are already up-to-date.
+.TP
+.B \-n
+print the commands but do not run them.
+.TP
+.BI "\-p " n
+the number of programs, such as build commands or
+test binaries, that can be run in parallel.
+.br
+The default is GOMAXPROCS, normally the number of CPUs available.
+.TP
+.B \-race
+enable data race detection.
+.br
+Supported only on linux/amd64, freebsd/amd64, darwin/amd64, darwin/arm64, windows/amd64,
+linux/ppc64le and linux/arm64 (only for 48-bit VMA).
+.TP
+.B \-msan
+enable interoperation with memory sanitizer.
+Supported only on linux/amd64, linux/arm64
+and only with Clang/LLVM as the host C compiler.
+On linux/arm64, pie build mode will be used.
+.TP
+.B \-asan
+enable interoperation with address sanitizer.
+Supported only on linux/arm64, linux/amd64.
+Supported only on linux/amd64 or linux/arm64 and only with GCC 7 and higher
+or Clang/LLVM 9 and higher.
+.TP
+.B \-v
+print the names of packages as they are compiled.
+.TP
+.B \-work
+print the name of the temporary work directory and
+do not delete it when exiting.
+.TP
+.B \-x
+print the commands.
+
+.TP
+.BI "\-asmflags '[pattern=]" "arg list" '
+arguments to pass on each go tool asm invocation.
+.TP
+.BI \-buildmode " mode"
+build mode to use. See \(oqgo help buildmode\(cq for more.
+.TP
+.B \-buildvcs
+Whether to stamp binaries with version control information. By default,
+version control information is stamped into a binary if the main package
+and the main module containing it are in the repository containing the
+current directory (if there is a repository). Use \-buildvcs=false to
+omit version control information.
+.TP
+.BI \-compiler " name"
+name of compiler to use, as in runtime.Compiler (gccgo or gc)
+.TP
+.BI "\-gccgoflags '" "arg list" '
+arguments to pass on each gccgo compiler/linker invocation
+.TP
+.BI "\-gcflags '" "arg list" '
+arguments to pass on each go tool compile invocation.
+.TP
+.BI "\-installsuffix " suffix
+a suffix to use in the name of the package installation directory,
+in order to keep output separate from default builds.
+If using the -race flag, the install suffix is automatically set to race
+or, if set explicitly, has _race appended to it. Likewise for the \-msan
+and \-asan flag. Using a \-buildmode option that requires non-default compile
+flags has a similar effect.
+.TP
+.BI "\-ldflags '" "flag list" '
+arguments to pass on each go tool link invocation.
+.TP
+.B \-linkshared
+build code that will be linked against shared libraries previously
+created with \-buildmode=shared.
+.TP
+.BI "\-mod " mode
+module download mode to use: readonly, vendor, or mod.
+By default, if a vendor directory is present and the go version in go.mod
+is 1.14 or higher, the go command acts as if -mod=vendor were set.
+Otherwise, the go command acts as if -mod=readonly were set.
+See https://golang.org/ref/mod#build-commands for details.
+.TP
+.B \-modcacherw
+leave newly-created directories in the module cache read-write
+instead of making them read-only.
+.TP
+.BI "\-modfile " file
+in module aware mode, read (and possibly write) an alternate go.mod
+file instead of the one in the module root directory. A file named
+"go.mod" must still be present in order to determine the module root
+directory, but it is not accessed. When -modfile is specified, an
+alternate go.sum file is also used: its path is derived from the
+\-modfile flag by trimming the ".mod" extension and appending ".sum".
+.TP
+.BI "\-overlay " file
+read a JSON config file that provides an overlay for build operations.
+The file is a JSON struct with a single field, named \(oqReplace\(cq, that
+maps each disk file path (a string) to its backing file path, so that
+a build will run as if the disk file path exists with the contents
+given by the backing file paths, or as if the disk file path does not
+exist if its backing file path is empty. Support for the -overlay flag
+has some limitations: importantly, cgo files included from outside the
+include path must be in the same directory as the Go package they are
+included from, and overlays will not appear when binaries and tests are
+run through go run and go test respectively.
+.TP
+.BI "\-pkgdir " dir
+install and load all packages from dir instead of the usual locations.
+For example, when building with a non-standard configuration,
+use \-pkgdir to keep generated packages in a separate location.
+.TP
+.BR "\-tags " tag,list
+a comma-separated list of additional build tags to consider satisfied
+during the build. For more information about build tags, see
+\(oqgo help buildconstraint\(cq. (Earlier versions of Go used a
+space-separated list, and that form is deprecated but still recognized.)
+.TP
+.B \-trimpath
+remove all file system paths from the resulting executable.
+Instead of absolute file system paths, the recorded file names
+will begin either a module path@version (when using modules),
+or a plain import path (when using the standard library, or GOPATH).
+.TP
+.BI "\-toolexec '" "cmd args" '
+a program to use to invoke toolchain programs like vet and asm.
+For example, instead of running asm, the go command will run
+\(oqcmd args /path/to/asm <arguments for asm>\(cq.
+.br
+The TOOLEXEC_IMPORTPATH environment variable will be set,
+matching \(oqgo list -f {{.ImportPath}}\(cq for the package being built.
+
+.P
+The \-asmflags, \-gccgoflags, \-gcflags, and \-ldflags flags accept a
+space-separated list of arguments to pass to an underlying tool
+during the build. To embed spaces in an element in the list, surround
+it with either single or double quotes. The argument list may be
+preceded by a package pattern and an equal sign, which restricts
+the use of that argument list to the building of packages matching
+that pattern (see \(oqgo help packages\(cq for a description of package
+patterns). Without a pattern, the argument list applies only to the
+packages named on the command line. The flags may be repeated
+with different patterns in order to specify different arguments for
+different sets of packages. If a package matches patterns given in
+multiple flags, the latest match on the command line wins.
+For example, \(oqgo build \-gcflags=-S fmt\(cq prints the disassembly
+only for package fmt, while \(oqgo build \-gcflags=all=-S fmt\(cq
+prints the disassembly for fmt and all its dependencies.
+.P
+For more about specifying packages, see \fBgo-packages\fP(7).
+.br
+For more about where packages and binaries are installed, see \fBgo-gopath\fP(1).
+.br
+For more about calling between Go and C/C++, run \(oqgo help c\(cq.
+.P
+Note: Build adheres to certain conventions such as those described
+by \(oqgo help gopath\(cq. 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 \(oqgo tool compile\(cq and \(oqgo tool link\(cq to avoid
+some of the overheads and design decisions of the build tool.
+.SH SEE ALSO
+.BR go-install (1),
+.BR go-get (1),
+.BR go-clean (1).
+.SH AUTHOR
+This manual page was written by Michael Stapelberg <stapelberg@debian.org>
+and is maintained by the
+Debian Go Compiler Team <team+go-compiler@tracker.debian.org>
+based on the output of \(oqgo help build\(cq
+for the Debian project (and may be used by others).