Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What do these Go build flags mean? netgo -extldflags "-lm -lstdc++ -static"'

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?

like image 790
Adrian Krebs Avatar asked Jun 04 '16 12:06

Adrian Krebs


1 Answers

--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
like image 144
Artem Kazakov Avatar answered Nov 14 '22 02:11

Artem Kazakov