Valerons Asked:2025-04-28 13:35:16 +0000 UTC2025-04-28 13:35:16 +0000 UTC 2025-04-28 13:35:16 +0000 UTC 使用 Golang 发布应用程序 772 我想了解如何构建用 Go 语言编写的应用程序。如果你写入命令go build,则只会编译一个可执行文件。这就是运行应用程序所需的全部内容吗?例如,在 C# 中,如果您构建一个项目,将出现一个单独的发布文件夹,其中将包含所有依赖项。已发布的 Go 应用程序的所有依赖项存储在哪里? golang 1 个回答 Voted Best Answer Komdosh 2025-04-28T14:14:45Z2025-04-28T14:14:45Z Go 将所有依赖项(包括第三方库)直接编译为可执行文件。 go.mod依赖关系在(模块)和(要检查的哈希值)中指定go.sum。 首次运行go buildGo 时,它会自动从互联网(例如,从 GitHub)下载依赖项并将它们缓存在$GOPATH/pkg/mod. 编译时,这些依赖项的代码将内置到二进制文件中,因此构建后,不再需要依赖项的源文件。 确实可以动态链接。默认情况下,Go 使用静态链接。 CGO但是,如果您的代码通过(例如)调用 C 库import "C",那么这些库将被动态链接。那些。它们必须作为单独的编译文件预先安装在操作系统上,就像.dll在 C# 中一样。 为了避免这种情况,您可以禁用 CGO CGO_ENABLED=0 go build:。
Go 将所有依赖项(包括第三方库)直接编译为可执行文件。
go.mod
依赖关系在(模块)和(要检查的哈希值)中指定go.sum
。首次运行
go build
Go 时,它会自动从互联网(例如,从 GitHub)下载依赖项并将它们缓存在$GOPATH/pkg/mod
.编译时,这些依赖项的代码将内置到二进制文件中,因此构建后,不再需要依赖项的源文件。
确实可以动态链接。默认情况下,Go 使用静态链接。
CGO
但是,如果您的代码通过(例如)调用 C 库import "C"
,那么这些库将被动态链接。那些。它们必须作为单独的编译文件预先安装在操作系统上,就像.dll
在 C# 中一样。为了避免这种情况,您可以禁用 CGO
CGO_ENABLED=0 go build
:。