我注意到,使用go build时,二进制结果可能超过2MB;但使用gccgo时,二进制结果小于35k。
我在使用gccgo时注意到的另一个问题是,生成的二进制文件不能在另一台linux机器上运行(我认为缺少libgo.so ),但是go build二进制文件运行得很好(所以我想这是因为二进制文件包含了运行所需的所有内容?);有没有办法用gccgo做到这一点?
发布于 2013-03-27 01:34:13
您必须使用-static标志:
使用-static选项执行完全静态链接( gc编译器的默认设置)。
http://golang.org/doc/install/gccgo
发布于 2013-03-27 23:30:57
通过使用-static-libgo选项,您可以静态链接libgo,同时仍然动态链接系统库。(这仅适用于gccgo )。
发布于 2017-11-14 23:16:15
对于go 1.8或更高版本,如果go是用CGO_ENABLED=1 (默认为1)构建的,则本机编译会动态链接。通过运行go env CGO_ENABLED检查此变量。在运行go build时,您可以通过将环境变量CGO_ENABLED设置为0来切换到静态链接。
CGO_ENABLED=0 go build顺便说一句,交叉编译自动使用静态链接。
https://stackoverflow.com/questions/15640054
复制相似问题