两个流行的Go编译器"gc"和"gccgo"之间的主要区别是什么?建立表现?运行时性能?命令行选项?授权?
我不是在寻找最好的意见,只是对他们差异的基本概述,所以我可以决定哪种方法最符合我的需求.
我之前使用过UPX来减少我的Windows可执行文件的大小,但我必须承认我对这可能产生的任何负面影响都很天真.所有这些包装/拆包的缺点是什么?
是否存在任何人建议NOT UPX-ing可执行文件的情况(例如,在编写DLL,Windows服务或定位Vista或Win7时)?我在Delphi中编写了大部分代码,但我也使用UPX来压缩C/C++可执行文件.
另外,我没有尝试使用UPX来保护我的exe不被反汇编程序,只是为了减少可执行文件的大小并防止粗略的篡改.
为什么Go编译器会产生大的二进制文件?
例如,在编译下面的代码后,我得到一个1.8 MB的exec文件
package main
import "fmt"
func main(){
fmt.Println("Hello World")
}
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu和Win7上测试了上面的代码,结果是一样的!
我还用+70行代码编写了一个更大的程序,结果二进制文件又惊人地1.8 MB(实际上有几个字节差异).我想知道Go编译器将什么转储到二进制文件中.
我最近安装了go并尝试了hello world示例.
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
Run Code Online (Sandbox Code Playgroud)
$ go build hello.go
返回大小为1.2Mb的hello二进制文件.这对于一个你好的世界计划来说相对来说是巨大的.有什么特别的原因,为什么文件大小?是因为导入"fmt"吗?
go ×3
binary ×1
c++ ×1
compilation ×1
compression ×1
delphi ×1
gccgo ×1
size ×1
upx ×1
winapi ×1