答案:在CentOS 7上通过源码编译安装Golang需先安装gcc等开发工具,再下载Go源码包解压至/usr/local,运行all.bash脚本编译,随后配置GOROOT、GOPATH和PATH环境变量并使其生效,最后通过go version验证安装成功。

在CentOS 7系统上通过源码编译方式安装Golang,核心流程是下载官方源码包,解压后运行其自带的编译脚本,最后配置必要的环境变量以确保系统能识别并使用Go命令。这方法虽然比包管理器略显繁琐,但能让你获得最新或特定版本的Go,并且对安装过程有更强的控制力。
要在CentOS 7上从源码编译安装Golang,你需要先确保系统具备基本的编译环境,通常是
gcc
安装编译工具链: 如果你的系统还没有安装
gcc
sudo yum install gcc -y
或者,为了更全面地支持开发,可以安装整个开发工具组:
sudo yum groupinstall "Development Tools" -y
下载Golang源码包: 访问Go官方下载页面(
https://go.dev/dl/
goX.Y.Z.src.tar.gz
wget
curl
/usr/local/src
cd /usr/local/src sudo wget https://go.dev/dl/go1.22.2.src.tar.gz # 请替换为你想安装的Go版本
如果你在国内访问go.dev遇到困难,可能需要考虑使用国内的镜像源,或者提前在本地下载好再上传到服务器。
立即学习“go语言免费学习笔记(深入)”;
解压源码包: 将下载的源码包解压。我个人倾向于将其解压到
/usr/local/
/usr/local/go
sudo tar -C /usr/local -xzf go1.22.2.src.tar.gz
解压后,你应该能在
/usr/local/go
编译Golang: 进入解压后的Go源码目录,运行其自带的
all.bash
cd /usr/local/go/src ./all.bash
这个过程可能需要一些时间,具体取决于你的服务器性能。如果一切顺利,最后会看到类似“ALL TESTS PASSED”的字样。如果出现错误,通常是缺少
gcc
配置环境变量: 这是最关键的一步,它告诉系统Go的安装位置以及你的Go项目工作区在哪里。 你需要设置
GOROOT
GOPATH
PATH
GOROOT
/usr/local/go
GOPATH
go
/home/youruser/go
go get
PATH
$GOROOT/bin
$GOPATH/bin
go
打开你的用户配置文件(例如
~/.bashrc
~/.profile
/etc/profile
/etc/profile.d/
go.sh
~/.bashrc
# 编辑你的shell配置文件,例如: vim ~/.bashrc
在文件末尾添加以下行:
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
保存并关闭文件。然后,使这些更改生效:
source ~/.bashrc
如果你设置了
GOPATH
mkdir -p $HOME/go
验证安装: 现在,你应该可以在任何终端窗口中运行Go命令了。
go version
如果显示出你安装的Go版本信息,那么恭喜你,安装成功了!
这个问题其实挺有意思的,它背后反映的是对“掌控”和“便利”的权衡。对于CentOS 7这类企业级发行版,其官方仓库中的软件版本往往偏旧,追求的是稳定而非最新。当你通过
yum install golang
选择源码编译,在我看来,主要有几个原因:
一个显而易见的理由是获取最新版本。Go语言迭代速度不算慢,新版本通常会带来性能提升、新的语言特性或重要的安全修复。如果你正在开发一个需要利用这些新特性的项目,或者只是想体验最新的Go,那么源码编译是唯一的途径。包管理器更新滞后,有时候会让你错过这些“新鲜货”。
其次是版本控制的灵活性。有时候,你可能需要在同一台服务器上运行不同Go版本编译的项目,或者需要测试某个特定旧版本的兼容性。源码编译让你能精确地选择并安装任何历史版本的Go。虽然可以通过一些工具(如
goenv
再者,更深入地理解构建过程。虽然对于大多数开发者来说,这可能不是核心需求,但亲自走一遍源码编译的流程,你会对Go语言的构建机制、依赖管理有一个更直观的认识。这在排查一些底层问题时可能会派上用场。
当然,源码编译也有它的缺点,比如过程相对复杂,需要手动处理依赖、配置环境变量,并且后续升级也需要重复类似步骤。但对于那些对系统有一定控制欲,或者有特定版本需求的用户来说,这些“麻烦”是完全值得的。它给你带来的是对开发环境的绝对掌控,而不是被发行版仓库所限制。
在CentOS 7上源码编译Go,最常见的依赖问题几乎都围绕着C编译器。Go语言虽然号称“自带编译器”,但其核心部分(特别是runtime和一些标准库)仍然是用C语言编写的,编译这些部分需要一个C编译器。在Linux系统上,这个角色通常由
gcc
问题1:gcc
./all.bash
gcc
command not found: gcc
gcc
解决方案: 最直接的方法就是安装
gcc
sudo yum install gcc -y
为了更稳妥,我通常会推荐安装整个“Development Tools”包组,它包含了
gcc
g++
make
sudo yum groupinstall "Development Tools" -y
安装完成后,再次尝试运行
./all.bash
问题2:all.bash
all.bash
解决方案: 根据错误信息,使用
yum
glibc
glibc
gcc
一个小提醒: 在执行
./all.bash
/usr/local/go/src
go version
环境变量的配置是Go安装后能否正常使用的关键一环,它告诉操作系统去哪里找Go的执行文件,以及你的Go项目应该放在哪里。这块内容,虽然看起来简单,但如果配置不对,后续开发会遇到各种“找不到命令”或“找不到包”的头疼问题。
Go语言主要涉及三个核心环境变量:
GOROOT
GOPATH
PATH
GOROOT
/usr/local/go
GOPATH
$HOME/go
GOPATH
src
go get
pkg
bin
go install
GOPATH
PATH
PATH
go
go install
$GOROOT/bin
$GOPATH/bin
PATH
$GOROOT/bin
go
$GOPATH/bin
go install
GOPATH
确保永久生效的策略:
环境变量的配置方式决定了它们是临时生效还是永久生效。
临时生效(仅当前会话): 在终端直接执行
export GOROOT=/usr/local/go
永久生效(用户级别): 这是最常见的配置方式。你需要编辑你当前用户的主目录下的shell配置文件。对于Bash shell,通常是
~/.bashrc
~/.profile
~/.bashrc
vim ~/.bashrc # 或者使用你喜欢的编辑器
在文件末尾添加以下内容:
# Go Language Environment Variables export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
添加完成后,保存并退出。然后,你需要加载这些新的配置,让它们立即生效,而不需要重新登录:
source ~/.bashrc
别忘了创建
GOPATH
mkdir -p $HOME/go
永久生效(系统级别,对所有用户): 如果你希望服务器上的所有用户都能使用这个Go环境,那么你需要编辑
/etc/profile
/etc/profile.d/
go.sh
sudo vim /etc/profile.d/go.sh
在
go.sh
# Go Language Environment Variables for all users export GOROOT=/usr/local/go export GOPATH=/var/go # 或者选择一个所有用户可访问的共享目录 export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
注意,系统级的
GOPATH
$HOME
sudo mkdir -p /var/go sudo chmod -R 777 /var/go # 或者更精细的权限控制
系统级的配置通常需要重启服务器或者重新登录才能完全生效。
正确配置并理解这些环境变量,是顺利进行Go开发的基础。
当你通过源码编译安装了Go之后,未来的版本管理(无论是升级到新版本还是回退到旧版本)都会变得相对直接,但需要一点手动操作。核心思路是:下载新/旧版本的源码,编译安装到新的目录,然后通过调整环境变量来切换你想要使用的Go版本。
升级操作:
下载新版本源码: 访问Go官方下载页面,找到你想要升级到的最新版本(例如
go1.23.0.src.tar.gz
cd /usr/local/src sudo wget https://go.dev/dl/go1.23.0.src.tar.gz # 替换为新版本
解压到新目录: 为了避免覆盖旧版本,我通常会把新版本解压到带有版本号的目录中,例如
/usr/local/go1.23.0
sudo tar -C /usr/local -xzf go1.23.0.src.tar.gz # 解压后,你可能会得到一个名为 go 的目录,需要手动重命名 sudo mv /usr/local/go /usr/local/go1.23.0
注意: 官方源码包解压后通常会生成一个名为
go
/usr/local/go
/usr/local/go1.23.0
/usr/local/
go
go1.23.0
编译新版本: 进入新版本的源码目录进行编译。
cd /usr/local/go1.23.0/src # 进入新版本的src目录 ./all.bash
更新环境变量: 这是关键一步。你需要修改之前设置的
GOROOT
~/.bashrc
/etc/profile.d/go.sh
export GOROOT=/usr/local/go
export GOROOOT=/usr/local/go1.23.0
vim ~/.bashrc # 修改: export GOROOT=/usr/local/go1.23.0
保存并
source ~/.bashrc
验证:
go version
确认显示的是新版本号。
降级操作:
降级操作与升级类似,只是你下载的是一个旧版本的Go源码包。
下载旧版本源码: 从Go官方下载页面下载你想要降级到的旧版本源码包。
解压到新目录: 同样,解压到带有版本号的新目录,例如
/usr/local/go1.20.0
编译旧版本: 进入旧版本的源码目录进行编译。
更新环境变量: 将
GOROOT
export GOROOT=/usr/local/go1.20.0
验证: 确认显示的是旧版本号。
多版本共存与切换的技巧:
如果你经常需要在不同Go版本之间切换,每次修改环境变量再
source
/usr/local/goX.Y.Z
/usr/local/go_current
sudo ln -sfn /usr/local/go1.23.0 /usr/local/go_current # 指向当前版本
GOROOT
export GOROOT=/usr/local/go_current
这样,当你需要切换版本时,只需要更新软链接的指向即可,而不需要修改
~/.bashrc
sudo ln -sfn /usr/local/go1.20.0 /usr/local/go_current # 切换到旧版本 source ~/.bashrc # 重新加载环境变量
这种方式可以让你在不同Go版本之间快速切换,尤其适合在同一台机器上管理多个Go项目或测试不同Go版本兼容性的场景。
以上就是CentOS 7系统如何通过源码编译方式安装Golang的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号