要测量作为导入到您自己的包中的 Go 项目的大小,可以通过多种方法来评估其占用空间。 🎜>
一种方法是检查库二进制文件所在的 $GOPATH/pkg 目录。例如,安装 gorilla/mux、gorilla/securecookie 和 gorilla/sessions 包将在 $GOPATH/pkg/darwin_amd64/github.com/gorilla/ 目录中生成二进制大小。$ cd $GOPATH/pkg/darwin_amd64/github.com/gorilla/ $ du -k * 284 mux.a 128 securecookie.a 128 sessions.a但是,库大小并不是链接后对可执行文件大小影响的唯一指标。包内的依赖关系可能会引入额外的“包袱”,这些包袱可能会或可能不会被其他导入共享。为了说明这种可变性,请考虑以下三个程序:empty.go、http.go 和 mux.go。
// empty.go package main func main() {}
// http.go package main import "net/http" var _ = http.Serve func main() {}
// mux.go package main import "github.com/gorilla/mux" var _ = mux.NewRouter func main() {}尽管它们的功能等效,但它们的二进制大小差异很大:
$ du -k * 1028 empty 5812 http 5832 muxhttp.go 中添加的 net/http 导入极大地增加了其二进制大小这是因为 mux 包依赖于 net/http 包,所以它继承了它的依赖项。链接器可能会在编译过程中消除一些额外的负担,但计算包的真实占用空间并不简单。
结论:识别包的子依赖关系对于准确评估至关重要它对可执行文件大小的影响。简单地添加包库大小并不能提供完整的图片。
以上是依赖关系如何影响 Go 可执行文件的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!