I'm currently taking a microservice online course where I deploy small go apps to docker containers. The long and ugly command line to build the binaries is this one:

go build --tags netgo --ldflags '-extldflags "-lm -lstdc++ -static"'

till now I just used go install to compile my go app.

Can anyone explain this command to me?

1

Best Answer


--tags netgo is used to use go lang network stack

--ldflags sets the flags that are passed to 'go tool link'

The value of the args to ldflags is explained in the go tool link help

-extldflags flagsSet space-separated flags to pass to the external linker.

In this case the external linker is 'ld' so you can read the man page for it
Meaning of each of the arguments is:

-lm enables linking of the standard math library-lstdc++ enables linking of the standard c++ library-static means do not link against shared libraries