Golang中如何为包创建二进制文件

Golang中如何为包创建二进制文件 假设我们在Go语言中创建一个包,需要将其托管在GitHub上,以便用户可以通过go get github.com/package下载。

我看到大多数人都在GitHub账户下托管源代码。
我们能否用二进制文件代替源代码?
是否可以为包创建二进制文件?

谢谢,
Akhil

9 回复

是的。

更多关于Golang中如何为包创建二进制文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


感谢 @NobbZ  
这意味着我们无法在没有源代码的情况下发布软件包。

根据文档说明,自1.12版本起不再支持二进制专用包。

@NobbZ 你的理解是正确的。我发帖是想了解我们是否可以为包创建二进制文件。

不过@hollowaykeanho 的帖子在其他方面给了我帮助。

我们是否解决了您的问题?如果已解决,请随时"标记为已解决"。请将第一条回复标记为正确答案,因为那是正确的解答。

// 代码示例(如有需要可在此添加)

看起来我最初误解了你的问题……我以为这个问题是关于库包的,而不是可执行文件。

当然,编译后的可执行文件可以直接分发,通常目标系统上除了 libc 之外不需要安装任何其他依赖……

如果你在 GitHub 上,可以试试 https://github.com/goreleaser/goreleaser。它可以将你的二进制文件打包成面向不同操作系统的发布包。不过,这和使用 go get 获取二进制文件是分开的。

是的,可以为Go包创建二进制文件,这样用户可以直接下载预编译的可执行文件,而无需从源代码构建。这通常通过使用Go的交叉编译功能来实现,生成针对不同操作系统和架构的二进制文件。

步骤概述:

  1. 编写Go代码:确保你的包包含一个main包和main函数,以便生成可执行文件。
  2. 使用go build命令编译:通过指定目标操作系统和架构,生成二进制文件。
  3. 托管二进制文件:将生成的二进制文件上传到GitHub Releases或其他托管服务。

示例:

假设你的包结构如下(例如,在GitHub上的github.com/akhil/mytool):

  • 项目根目录包含一个main.go文件,其中定义了main包。

main.go 文件内容示例:

package main

import "fmt"

func main() {
    fmt.Println("Hello from mytool!")
}

编译为二进制文件:

使用go build命令,并指定目标平台。例如,为Linux 64位编译:

GOOS=linux GOARCH=amd64 go build -o mytool-linux-amd64

为Windows 64位编译:

GOOS=windows GOARCH=amd64 go build -o mytool-windows-amd64.exe

为macOS 64位编译:

GOOS=darwin GOARCH=amd64 go build -o mytool-darwin-amd64

托管二进制文件:

  1. 在GitHub仓库中,创建一个新的Release(例如,通过GitHub网页界面)。
  2. 将编译好的二进制文件(如mytool-linux-amd64mytool-windows-amd64.exe等)附加到Release中。
  3. 用户可以从Release页面直接下载二进制文件,而无需运行go get

注意事项:

  • 如果包不是可执行程序(即没有main包),则无法生成二进制可执行文件;它只能作为库被其他Go程序导入。
  • 使用go get命令默认会下载源代码并编译,但提供预编译二进制文件可以简化用户的安装过程,特别是对于非Go开发者。
  • 确保在编译时指定正确的GOOSGOARCH以覆盖常见平台(如Linux、Windows、macOS)。

通过这种方式,用户可以直接下载并使用二进制文件,而无需依赖Go工具链进行构建。

回到顶部