温馨提示×

ubuntu golang编译路径怎么设置

小樊
35
2025-11-26 19:29:32
栏目: 编程语言

Ubuntu 下设置 Go 编译相关路径

一 关键路径与环境变量

  • GOROOT:Go 工具链的安装目录,包含编译器、标准库等。常见路径:通过 apt 安装一般为**/usr/lib/go**,官方压缩包解压一般为**/usr/local/go**。
  • GOPATH:Go 工作区目录(历史用法,Go 1.11+ 推荐使用模块,GOPATH 非必须)。典型结构包含src、pkg、bin
  • PATH:需要将**$GOROOT/bin$GOPATH/bin**加入 PATH,以便随处执行 go 命令与项目可执行文件。
  • 常用查看与设置命令:go versiongo envgo env -w KEY=VALUE(写入配置)。

二 设置步骤

  • 安装 Go(两种常用方式,二选一)
    • 使用 apt:
      sudo apt update && sudo apt install -y golang
    • 使用官方压缩包:
      wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
      sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
  • 配置环境变量(写入当前用户的 shell 配置文件,如**~/.bashrc~/.profile**)
    • 若通过 apt 安装(GOROOT 多为**/usr/lib/go**):
      echo ‘export GOROOT=/usr/lib/go’ >> ~/.bashrc
      echo ‘export GOPATH=$HOME/go’ >> ~/.bashrc
      echo ‘export PATH=$GOROOT/bin:$GOPATH/bin:$PATH’ >> ~/.bashrc
    • 若通过官方包安装(GOROOT 为**/usr/local/go**):
      echo ‘export GOROOT=/usr/local/go’ >> ~/.bashrc
      echo ‘export GOPATH=$HOME/go’ >> ~/.bashrc
      echo ‘export PATH=$GOROOT/bin:$GOPATH/bin:$PATH’ >> ~/.bashrc
  • 使配置生效并验证
    source ~/.bashrc
    go version
    go env GOROOT GOPATH

三 编译输出路径与工作区布局

  • 使用模块(Go 1.11+,推荐):在项目根目录(含go.mod)执行
    • 编译为当前目录可执行文件:go build(生成与目录同名的可执行文件)
    • 指定输出路径与名称:go build -o bin/myapp
    • 交叉编译示例:GOOS=linux GOARCH=amd64 go build -o bin/myapp-linux
  • 使用 GOPATH(旧方式,了解即可):代码放在**$GOPATH/src**,构建产物在**$GOPATH/bin**;建议将**$GOPATH/bin**加入 PATH 便于直接运行。
  • 常用辅助命令:go run main.go(直接运行)、go install(安装到**$GOPATH/bin**)。

四 多版本与常见问题

  • 多版本管理(可选):使用 GVM 安装与切换版本
    bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
    gvm install go1.21.0
    gvm use go1.21.0 --default
  • 常见问题排查
    • 命令找不到:确认**$GOROOT/bin$GOPATH/bin**已加入 PATH,执行 source 使配置生效。
    • GOROOT 设置错误:通过go env GOROOT核对实际安装路径;apt 一般为**/usr/lib/go**,官方包为**/usr/local/go**。
    • 权限问题:避免将 Go 安装到需要 sudo 写入的目录(如系统目录)进行日常开发,推荐使用**/usr/local/go**或用户目录。
    • 国内依赖下载慢:启用模块代理
      go env -w GOPROXY=https://goproxy.cn,direct。

0