GOOS=linux
是 Go 语言中用于设置目标操作系统的环境变量,通常用于交叉编译(即在当前系统下编译生成其他平台的二进制文件)。
1. 基本用法
(1) 临时设置环境变量(单次编译)
# 在当前终端会话中编译 Linux 可执行文件(不影响全局配置)
GOOS=linux go build main.go
- 输出结果:生成一个 Linux 平台的可执行文件(默认无后缀,Windows 会加
.exe
)。
(2) 永久修改环境变量
如果希望长期生效,可以写入 shell 配置文件(如 ~/.bashrc
、~/.zshrc
):
echo 'export GOOS=linux' >> ~/.bashrc
source ~/.bashrc
2. 常见应用场景
(1) 跨平台编译示例
# Mac/Windows → Linux
GOOS=linux GOARCH=amd64 go build -o app-linux main.go
# Mac → Windows
GOOS=windows GOARCH=amd64 go build -o app.exe main.go
(2) Docker 镜像构建
在 Dockerfile 中直接指定 Linux 目标:
FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN GOOS=linux GOARCH=amd64 go build -o myapp .
FROM alpine:latest
COPY --from=builder /app/myapp .
CMD ["./myapp"]
3. 查看当前配置
go env GOOS # 查看当前目标系统(默认为本机系统)
go env GOARCH # 查看当前 CPU架构(如 amd64/arm64)
4.注意事项
必须同时指定
GOARCH
:
如果目标平台 CPU架构不同(例如从 Mac M1→Linux x86),需显式设置:GOOS=linux GOARCH=amd64 go build main.go
CGO影响:
如果代码依赖 CGo(如调用了 C库),交叉编译可能需要禁用 CGo: “`bash CGO_ENABLED=0 GOOS=linux go build main.go
内容由零声教学AI助手提供,问题来源于学员提问