Go语言搭建:Ubuntu源码编译安装教程
学习Golang要努力,但是不要急!今天的这篇文章《Go语言环境搭建:Ubuntu源码编译与安装方法》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

本文详细介绍了在Ubuntu系统上安装Go语言开发环境的多种方法,包括从源码编译、使用官方安装包以及利用GVM、apt-get等第三方工具。针对旧版本Ubuntu系统可能遇到的`apt-get`仓库问题,文章特别强调了源码编译的详细步骤,并提供了环境配置、版本验证及常见问题的解决方案,旨在帮助开发者选择最适合自身需求的安装方式,高效搭建Go开发环境。
Go语言作为一门高效、简洁的编程语言,其开发环境的搭建是学习和使用的第一步。在Linux系统,尤其是Ubuntu上,有多种方式可以安装Go,每种方法都有其适用场景。本文将详细阐述这些安装方法,并提供具体的操作步骤。
一、 Go语言安装方法概述
Go语言的安装主要有以下三种主流方式:
- 从源码编译安装: 适用于对系统环境有特定要求、希望使用最新开发版本或解决包管理器版本过旧问题的开发者。这种方法需要手动处理依赖和编译过程,但提供了最大的灵活性。
- 使用官方安装包: Go官方为Windows、Linux、macOS等主流操作系统提供了预编译的二进制安装包,这是最简单快捷的安装方式。
- 利用第三方工具或包管理器: 针对不同的操作系统,有相应的第三方工具或系统自带的包管理器可以简化Go的安装过程,例如Ubuntu的apt-get、macOS的Homebrew以及Go版本管理工具GVM等。
二、 从源码编译安装Go语言(推荐解决旧系统问题)
对于一些旧版本的Ubuntu系统(如Ubuntu 12.10),系统自带的apt-get仓库可能提供过时的Go版本,甚至由于仓库地址失效导致安装失败。此时,从源码编译安装Go是最佳选择。
1. 准备编译环境
在Unix-like系统上,编译Go语言需要gcc或类似的C编译器,以及其他一些构建工具。
sudo apt-get update sudo apt-get install bison ed gawk gcc libc6-dev make
2. 安装Mercurial版本控制工具
Go语言的源码由Mercurial管理,因此需要先安装Mercurial才能下载源码。
sudo apt-get install python-setuptools python-dev build-essential sudo apt-get install mercurial
3. 下载Go源码
选择一个合适的目录来存放Go源码,通常建议在用户主目录下。注意,Go的安装目录(GOROOT)不应与源码下载目录重合。
# 进入用户主目录 cd ~ # 克隆Go语言的release分支源码 hg clone -u release https://code.google.com/p/go
注意: https://code.google.com/p/go 是旧的Go源码仓库地址,可能已不可用。当前Go源码托管在GitHub:https://github.com/golang/go。如果遇到下载问题,请尝试从GitHub克隆:
git clone https://github.com/golang/go.git
重要提示: 如果使用 git clone 下载源码,后续编译步骤可能会有所不同。传统的 all.bash 脚本是针对 hg 仓库结构的。对于 git 仓库,通常直接进入 go/src 目录执行 ./make.bash。本文档将沿用原始答案的 hg clone 和 all.bash 流程,但请读者根据实际情况调整。
4. 编译Go源码
进入下载好的Go源码目录,并执行编译脚本。这个过程可能需要几分钟。
cd go/src ./all.bash
如果编译和测试成功,你将看到类似如下的输出信息:
--- ALL TESTS PASSED --- Installed Go for linux/amd64 in /home/ubuntu/go. Installed commands in /home/ubuntu/go/bin. *** You need to add /home/ubuntu/go/bin to your $PATH. *** The compiler is 6g.
这表明Go已经成功安装到/home/ubuntu/go目录。
5. 验证Go版本
编译完成后,可以验证Go是否正确安装。
~/go/bin/go version
6. 配置Go环境变量
为了在任何目录下都能方便地使用Go命令,并设置Go的工作区,需要配置相关的环境变量。
- GOROOT: Go语言的安装路径,指向Go的根目录。
- GOPATH: Go语言的工作区路径,用于存放你的Go项目源码、第三方包以及编译后的二进制文件。它不应与GOROOT相同。
- PATH: 将GOROOT/bin和GOPATH/bin添加到系统的可执行文件搜索路径中。
打开或创建~/.profile文件(或~/.bashrc、~/.zshrc等,取决于你的shell),并添加以下内容:
echo "export GOROOT=\$HOME/go" >> ~/.profile echo "export GOPATH=\$HOME/gocode" >> ~/.profile echo "export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin" >> ~/.profile # 使配置立即生效 source ~/.profile
这里我们将GOPATH设置为$HOME/gocode,你也可以根据自己的喜好修改。
配置完成后,关闭当前终端,重新打开一个新的终端,或执行source ~/.profile使环境变量生效。然后再次验证:
go version
此时应该能直接执行go version命令。
三、 使用官方安装包安装Go语言
Go官方为各平台提供了便捷的安装包,通常是推荐给大多数用户的安装方式。
- 下载安装包: 访问Go语言官方下载页面(https://golang.org/dl/),根据你的操作系统选择对应的二进制安装包(例如,Linux用户选择goX.Y.Z.linux-amd64.tar.gz)。
- 解压安装: 将下载的压缩包解压到/usr/local目录(这是官方推荐的路径)。
sudo tar -C /usr/local -xzf goX.Y.Z.linux-amd64.tar.gz
(请将X.Y.Z替换为实际的版本号)
- 配置环境变量: 同样需要配置GOROOT、GOPATH和PATH环境变量。如果安装到/usr/local/go,则GOROOT为/usr/local/go。
echo "export GOROOT=/usr/local/go" >> ~/.profile echo "export GOPATH=\$HOME/gocode" >> ~/.profile echo "export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin" >> ~/.profile source ~/.profile
四、 利用第三方工具或包管理器安装Go语言
1. 使用GVM(Go Version Manager)
GVM是一个Go语言的多版本管理工具,类似于Ruby的RVM,非常适合需要在不同Go版本之间切换的开发者。
前提: 确保系统安装了curl。如果遇到curl: command not found错误,请先安装:
sudo apt-get update sudo apt-get install curl
安装GVM:
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
安装Go版本: 安装完成后,需要激活GVM(按照安装提示或执行source ~/.gvm/scripts/gvm)。然后使用GVM安装特定版本的Go:
gvm install go1.22.0 # 安装最新稳定版,或指定版本如 go1.0.3 gvm use go1.22.0 --default # 设置为默认使用此版本
2. 使用apt-get(适用于Ubuntu)
对于较新版本的Ubuntu,可以通过PPA(Personal Package Archive)来安装最新或稳定的Go版本,这比默认仓库更可靠。
sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable
这种方法通常会替你自动配置大部分环境变量。
3. 使用Homebrew(适用于macOS)
如果你是macOS用户,Homebrew是一个非常方便的包管理器。
brew install go
五、 注意事项与总结
- 选择合适的安装方式:
- 源码编译: 当系统apt-get仓库版本过旧、失效或需要特定Go版本时首选。
- 官方安装包: 最直接、最通用的方法。
- GVM: 适合需要管理多个Go版本的开发者。
- apt-get (PPA): Ubuntu用户获取稳定Go版本的便捷方式。
- 环境变量的重要性: 无论采用哪种安装方式,正确配置GOROOT、GOPATH和PATH环境变量都是确保Go开发环境正常工作的关键。务必在.profile、.bashrc或.zshrc中设置,并source文件使其生效。
- GOPATH的结构: GOPATH目录下通常包含src(存放源码)、pkg(存放编译后的包文件)和bin(存放可执行程序)三个子目录。
- 解决curl: command not found: 在尝试使用curl命令安装GVM或其他工具前,如果遇到此错误,请先执行sudo apt-get install curl进行安装。
通过以上详细的教程,无论是面对老旧系统还是追求最新版本,开发者都能够选择最适合自己的方法,顺利在Ubuntu系统上搭建Go语言开发环境,开启Go编程之旅。
终于介绍完啦!小伙伴们,这篇关于《Go语言搭建:Ubuntu源码编译安装教程》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!
Golangos/exec使用详解与实战
- 上一篇
- Golangos/exec使用详解与实战
- 下一篇
- TreeMap键排序原理与使用方法
-
- Golang · Go教程 | 29分钟前 | go · 重定向 · http client · 请求头 · 安全边界 · 重定向 Go net/http http.Client CheckRedirect
- Go net/http Client重定向时降级敏感请求头的处理方案
- 110浏览 收藏
-
- Golang · Go教程 | 1小时前 | 错误处理 · go · 文件系统 · io/fs · Go errors.Is io/fs fs.WalkDir fs.ReadFile
- Go io/fs区分文件不存在与读取失败的排查指南
- 358浏览 收藏
-
- Golang · Go教程 | 1小时前 | go · 文件系统 · WalkDir · Go io/fs fs.FS fs.WalkDir
- Go io/fs遍历虚拟文件系统的接口用法
- 247浏览 收藏
-
- Golang · Go教程 | 1小时前 | 错误处理 · 流式处理 · Go教程 · io.Copy · io.MultiReader · Go 错误处理 io io.Reader io.Copy io.MultiReader 输入流
- Go io合并多个输入流并处理错误的实践方案
- 421浏览 收藏
-
- Golang · Go教程 | 2小时前 | Go教程 · encoding/json · JSON解码 · 兼容升级 · Go encoding/json json.RawMessage json.Decoder 未知字段 兼容升级
- Go json.Decoder保留未知字段兼容升级的结构设计
- 468浏览 收藏
-
- Golang · Go教程 | 2小时前 | Go教程 · encoding/json · 流式解析 · JSON边界 · Go token json.Decoder json.Delim JSON嵌套边界
- Go json.Decoder用 Token 识别嵌套边界的实现方式
- 198浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 43次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 138次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 75次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 39次使用
-
- CMMLU
- 深入了解CMMLU中文评估基准,涵盖67个学科主题,提供数据集下载、Zero-shot/Five-shot评估方法及排行榜,助力优化中文语言模型性能。
- 26次使用
-
- Java 性能优化上线清单:从定位、改造到灰度发布
- 2026-06-11 860浏览
-
- Spring Boot 压测验证:Gatling、JMeter 与性能回归门禁
- 2026-06-11 843浏览
-
- Java NMT 非堆内存排查:Direct Buffer、线程栈与 Metaspace 分析
- 2026-06-11 826浏览
-
- Spring Boot 容器内存优化:JVM 堆、非堆与 MaxRAMPercentage
- 2026-06-11 809浏览
-
- Tomcat 连接与线程参数调优:maxThreads、acceptCount 与 KeepAlive
- 2026-06-11 792浏览

