如何使用gccgo构建完整的程序二进制文件?

时间:2013-03-26 14:49:03

标签: gcc go gccgo

我注意到当使用go build时,二进制结果可能超过2MB;但使用gccgo二进制文件小于35k。

我在使用gccgo时注意到的另一个问题是生成的二进制文件不能在另一个linux框上运行(我相信缺少libgo.so)但是go build二进制文件运行得很好(所以我想它,因为二进制文件包含了运行所需的所有内容?);有没有办法用gccgo

执行此操作

3 个答案:

答案 0 :(得分:8)

你必须使用-static标志:

  

使用-static选项执行完全静态链接(gc编译器的默认链接)。

http://golang.org/doc/install/gccgo

答案 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,交叉编译自动使用静态链接。