问题
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:
--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 flags
Set 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
来源:https://stackoverflow.com/questions/37630274/what-do-these-go-build-flags-mean-netgo-extldflags-lm-lstdc-static