这些Go构建标志意味着什么? netgo -extldflags“-lm -lstdc ++ -static”'

时间:2016-06-04 12:32:56

标签: go command-line compilation

我目前正在上一个微服务在线课程,我将小型应用程序部署到docker容器。构建二进制文件的漫长而丑陋的命令行是这样的:

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

到目前为止我只使用go install来编译我的应用程序。

任何人都可以向我解释这个命令吗?

1 个答案:

答案 0 :(得分:4)

- 标记netgo is used to use go lang network stack

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

go tool link help

中解释了arg到ldflags的值
-extldflags flags
    Set space-separated flags to pass to the external linker.

在这种情况下,外部链接器是'' 所以你可以阅读the man page for it
每个参数的含义是:

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