Termux上安装Go SDK需将Go解压至$HOME/go-sdk并导出GOROOT=$HOME/go-sdk/go及PATH=$GOROOT/bin:$PATH,禁用/usr/local路径;配置GOPROXY、GOSUMDB和GO111MODULE环境变量以适配国内网络;编译须用静态二进制或Termux clang重编译,避免glibc链接错误;模块缓存清理仅rm -rf $GOMODCACHE,且需注意pkg upgrade后检查$GOBIN权限。

Termux 上安装 Go SDK 要改哪些默认路径
Termux 默认不挂载 /usr/local,也不能直接写系统目录,所有操作必须在 $PREFIX(通常是 /data/data/com.termux/files/usr)下完成。Go 官方二进制包解压后若硬塞进 /usr/local/go 会失败或权限拒绝。
正确做法是把 Go 解压到 $HOME/go-sdk,然后手动导出 GOROOT:
mkdir -p $HOME/go-sdk-
wget https://go.dev/dl/go1.23.0.linux-arm64.tar.gz(按设备架构选,uname -m查 arm64/aarch64/x86_64) tar -C $HOME/go-sdk -xzf go1.23.0.linux-arm64.tar.gz- 在
~/.profile或~/.bashrc中添加:export GOROOT=$HOME/go-sdk/goexport PATH=$GOROOT/bin:$PATH
别依赖 Termux 的 pkg install golang —— 它通常滞后 1–2 个版本,且不保证 go tool 子命令完整(比如 go tool pprof 常缺失)。
Android 网络受限时如何拉取模块
国内或企业内网环境下,go get 直连 proxy.golang.org 几乎必超时。Termux 没有 Windows/macOS 那种图形化代理设置,必须靠环境变量硬控。
立即学习“go语言免费学习笔记(深入)”;
执行以下命令一次性配置(永久生效):
go env -w GOPROXY=https://goproxy.cn,direct-
go env -w GOSUMDB=off(避免校验失败中断;若需安全验证,改用sum.golang.google.cn) -
go env -w GO111MODULE=on(强制启用 Modules,否则在非 GOPATH 下go mod不工作)
注意:GOPROXY 后的 direct 是 fallback,不是可选项——它表示“当代理不可用时直连”,没它,网络断开就彻底卡死。
Go 配置库,使用 spf13/viper — 分层优先级(flag > env >file > KV > default),提供 BindPFlag/BindPFlags、SetEnvPrefix + SetEnvKeyReplace 等功能。
现场编译生成的二进制为什么不能直接运行
Termux 的 libc 是 musl,而官方 Go SDK 编译出的二进制默认链接 glibc(Linux 标准),直接运行会报错:cannot execute binary file: Exec format error 或更隐蔽的 no such file or directory(其实是动态链接器找不到)。
解决方法只有两个:
- 用 Termux 自带的
clang工具链重编译 Go:先pkg install clang make,再从源码编译 Go(耗时长,不推荐现场做) - 更实用的是交叉编译:在宿主机(如笔记本)上用
GOOS=android GOARCH=arm64 go build -ldflags="-s -w"生成静态二进制,推到手机运行(adb push或termux-open)
别用 go build -v 查依赖——Termux 的 go list -deps 在模块缓存不全时会假阴性;直接 go build -o app ./cmd/app 看是否报 import not found 更可靠。
Go module cache 占用太大怎么清理
Termux 存储空间紧张,$HOME/go/pkg/mod 很快涨到几百 MB。但 go clean -modcache 在 Termux 里常因权限或路径问题失败。
安全清理方式:
- 先确认当前模块缓存位置:
go env GOPATH和go env GOMODCACHE(后者默认是$GOPATH/pkg/mod) - 手动删:
rm -rf $GOMODCACHE(不是$GOPATH/pkg整个目录,只清mod) - 后续避免重复下载:用
go mod download -x看实际 fetch 的 URL,配合GOPROXY缓存机制减少重拉
真正容易被忽略的是:Termux 的 pkg upgrade 可能重置 $PREFIX 权限,导致后续 go install 写 $GOBIN 失败——每次系统更新后,记得检查 ls -ld $GOBIN 是否仍属当前用户。

















