商城首页欢迎来到中国正版软件门户

您的位置:首页 >如何在ubuntu上编译golang命令行工具

如何在ubuntu上编译golang命令行工具

  发布于2026-04-24 阅读(0)

扫一扫,手机访问

在 Ubuntu 上编译 Go 语言命令行工具

如何在ubuntu上编译golang命令行工具

想在 Ubuntu 系统上把 Go 代码变成好用的命令行工具?这事儿其实没想象中那么复杂。只要环境搭好,几步操作就能搞定。下面这份手把手的指南,能帮你从零开始,完成编译到打包的全过程。

前提条件

工欲善其事,必先利其器。动手之前,得先确保你的 Ubuntu 系统已经准备好了两样东西。

  1. 安装 Go 语言环境:这是最基础的一步。如果你的系统里还没有 Go,打开终端,用下面这两条命令就能轻松搞定:

    sudo apt update
    sudo apt install golang-go
  2. 设置 Go 环境变量:安装完成后,环境变量通常会自动配置好。不过,检查一下总没错。运行下面这两个命令,看看 GOPATHGOROOT 有没有正确输出:

    echo $GOPATH
    echo $GOROOT

    如果返回是空的,那就需要手动设置一下了。执行以下命令:

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

    当然,为了让这个设置每次开机都生效,别忘了把它们添加到你的 ~/.bashrc 或者 ~/.profile 文件末尾。

编译 Go 命令行工具

环境准备好了,接下来就是实战环节。从创建项目到最终运行,我们一步步来。

  1. 创建 Go 项目目录:首先,给你的工具找个“家”。在工作目录下,新建一个文件夹并进入:

    mkdir my-cli-tool
    cd my-cli-tool
  2. 初始化 Go 模块:现代 Go 项目都推荐使用模块管理。用一条命令初始化它:

    go mod init my-cli-tool
  3. 编写 Go 代码:现在,创建程序的入口文件 main.go。这里给一个简单的示例,它可以根据输入的命令做出不同响应:

    package main
    
    import (
        "fmt"
        "os"
    )
    
    func main() {
        if len(os.Args) < 2 {
            fmt.Println("Usage: my-cli-tool ")
            os.Exit(1)
        }
        command := os.Args[1]
        switch command {
        case "hello":
            fmt.Println("Hello, World!")
        default:
            fmt.Printf("Unknown command: %s\n", command)
            os.Exit(1)
        }
    }
  4. 编译 Go 代码:重头戏来了。使用 Go 自带的构建命令,将代码编译成可执行文件:

    go build -o my-cli-tool

    执行成功后,当前目录下就会生成一个名叫 my-cli-tool 的二进制文件。

  5. 运行编译后的命令行工具:是骡子是马,拉出来溜溜。运行它并试试“hello”命令:

    ./my-cli-tool hello

    如果一切顺利,终端上会亲切地显示:

    Hello, World!

    看到这行字,恭喜你,你的第一个 Go 命令行工具已经成功跑起来了!

打包和分发

工具自己能用还不够,如果你想分享给别人,或者部署到服务器上,就需要考虑打包和优化了。目标很明确:让文件更小,更独立。

这里有个组合拳:先用 Go 的链接器参数去掉调试信息,再用压缩工具进一步“瘦身”。首先,把压缩工具装上:

sudo apt install upx-ucl

然后,执行这套编译压缩连招:

go build -ldflags "-s -w" -o my-cli-tool
upx --best my-cli-tool

这样一来,你得到的可执行文件体积会小很多,分发和传输起来就方便多了。

按照上面这些步骤走一遍,在 Ubuntu 上编译和打包 Go 命令行工具,基本上就没什么障碍了。整个过程清晰直接,剩下的,就是发挥你的创意去开发更强大的工具了。

本文转载于:https://www.yisu.com/ask/9918636.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注