我注意到当使用go build
时,二进制结果可能超过2MB;但使用gccgo
二进制文件小于35k。
我在使用gccgo
时注意到的另一个问题是生成的二进制文件不能在另一个linux框上运行(我相信缺少libgo.so
)但是go build
二进制文件运行得很好(所以我想它,因为二进制文件包含了运行所需的所有内容?);有没有办法用gccgo
?
答案 0 :(得分:8)
答案 1 :(得分:5)
您可以使用-static-libgo选项静态链接libgo,同时仍动态链接系统库。 (这仅适用于gccgo)。
答案 2 :(得分:0)
使用go 1.8或更高版本,如果使用CGO_ENABLED=1
构建go(默认为1),则本机编译会动态链接。运行go env CGO_ENABLED
检查此变量。
通过在运行go build时将环境变量CGO_ENABLED设置为0,可以静态切换到链接。
CGO_ENABLED=0 go build
BTW,交叉编译自动使用静态链接。