How to build Golang executable with a different name other than the Golang package name?
Just use this:
go build -o [your desired output executable name]
You can specify the executable name using the -o
switch with
go build
If you want to switch to your source code directory and build on a single line you could do something like:
cd $GOPATH/github.com/username/go-foobar && go build -o foobar`
From the Golang documentation, the full set of the build flags is as follows:
-a
Force rebuilding of packages that are already up-to-date.-n
Print the commands but do not run them.-p n
The number of programs, such as build commands or test binaries, that can be run in parallel.
The default is the number of CPUs available.-race
Enable data race detection.
Supported only onlinux/amd64
,freebsd/amd64
,darwin/amd64
,windows/amd64
,linux/ppc64le
andlinux/arm64
(only for 48-bit VMA).-msan
Enable interoperation with memory sanitizer.
Supported only onlinux/amd64
,linux/arm64
, and only withClang/LLVM
as the host C compiler.
Onlinux/arm64
, pie build mode will be used.-v
Print the names of packages as they are compiled.-work
Print the name of the temporary work directory and do not delete it when exiting.-x
Print the commands.-asmflags '[pattern=]arg listā
Arguments to pass on each go tool asm invocation.-buildmode mode
Build mode to use. See āgo help buildmodeā for more.-compiler name
Name of compiler to use, as in runtime.Compiler (gccgo or gc).-gccgoflags '[pattern=]arg listā
Arguments to pass on each gccgo compiler/linker invocation.-gcflags '[pattern=]arg listā
Arguments to pass on each go tool compile invocation.-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
flag. Using a-buildmode
option that requires non-default compile flags has a similar effect.-ldflags '[pattern=]arg listā
Arguments to pass on each go tool link invocation.-linkshared
Build code that will be linked against shared libraries previously created with -buildmode=shared.-mod mode
Module download mode to use:readonly
,vendor
, ormod
.
See āgo help modules
ā for more.-modcacherw
Leave newly-created directories in the module cache read-write instead of making them read-only.-modfile file
In module aware mode, read (and possibly write) an alternatego.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 alternatego.sum
file is also used: its path is derived from the-modfile
flag by trimming the ā.modā extension and appending ā.sumā.-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.-tags tag,list
A comma-separated list of build tags to consider satisfied during the build. For more information about build tags, see the description of build constraints in the documentation for the go/build package.(Earlier versions of Go used a space-separated list, and that form is deprecated but still recognized.)
-trimpath
Remove all file system paths from the resulting executable.
Instead of absolute file system paths, the recorded file names will begin with either āgoā (for the standard library), or a module path@version (when using modules), or a plain import path (when usingGOPATH
).-toolexec 'cmd argsā
A program to use to invoke toolchain programs like vet andasm
.
For example, instead of runningasm
, the go command will run ācmd args /path/to/asm <arguments for asm>
ā.