在 PowerShell 中,设置环境变量的语法与 cmd 不同。你需要使用 $env:
来设置环境变量。这里是你如何在 PowerShell 中进行交叉编译:
1. 设置环境变量
$env:GOOS="linux"
$env:GOARCH="amd64"
这将设置目标操作系统为 linux
,架构为 amd64
,并使其在当前 PowerShell 会话中生效。
2. 编译 Go 程序
然后你可以继续使用 go build
来编译程序:
go build -o myprogram
3. 恢复环境变量(可选)
如果你不再需要这些环境变量,可以清除它们:
Remove-Item Env:GOOS
Remove-Item Env:GOARCH
以完整的示例演示
假设你在 Windows 上的 PowerShell 终端中,想要从 GitHub 克隆一个 Go 项目并编译成可以在 Alpine Linux 上运行的二进制文件。你可以按照以下步骤进行:
- 克隆 GitHub 项目
git clone https://github.com/username/repository.git
cd repository
- 设置交叉编译环境变量
$env:GOOS="linux"
$env:GOARCH="amd64"
- 编译程序
go build -o myprogram
- 传输到 Linux Alpine 系统(你可以使用 SCP、FTP 等工具上传到你的目标服务器)
总结
在 PowerShell 中设置环境变量的方式是:
$env:VARIABLE_NAME="value"
然后你就可以像在 cmd 中一样运行 go build
来交叉编译你的程序了。
查看当前环境变量是否设置成功
要查看是否成功设置了环境变量,可以使用以下命令:
$env:VARIABLE_NAME
例如,如果你设置了 GOOS,可以这样查看:
$env:GOOS
如果返回的值是你设置的 linux,则说明环境变量设置成功。
如何设置 Go 使用系统代理
你可以通过设置 Go 环境变量来让 Go 使用系统代理。具体来说,你需要设置以下几个环境变量:
HTTP_PROXY
:用于设置 HTTP 请求的代理。HTTPS_PROXY
:用于设置 HTTPS 请求的代理。NO_PROXY
:用于设置哪些地址不走代理。
设置步骤
假设你的代理地址是 http://proxy.example.com:8080
,你可以在 PowerShell 中执行以下命令来设置这些环境变量:
$env:HTTP_PROXY="http://proxy.example.com:8080"
$env:HTTPS_PROXY="http://proxy.example.com:8080"
如果你的代理服务器需要身份验证,你可以提供用户名和密码,像这样:
$env:HTTP_PROXY="http://username:password@proxy.example.com:8080"
$env:HTTPS_PROXY="http://username:password@proxy.example.com:8080"
配置 NO_PROXY
如果你希望在某些情况下跳过代理(例如,当访问某些内网地址时),你可以设置 NO_PROXY
环境变量。例如,如果你不想通过代理访问 localhost
和 127.0.0.1
,可以这样设置:
$env:NO_PROXY="localhost,127.0.0.1"
永久设置代理
如果你希望每次启动 PowerShell 时都自动使用这些代理设置,可以将这些环境变量添加到 PowerShell 的配置文件中。编辑 PowerShell 配置文件 $PROFILE
(如果文件不存在,可以创建它)并添加如下内容:
$env:HTTP_PROXY="http://proxy.example.com:8080"
$env:HTTPS_PROXY="http://proxy.example.com:8080"
$env:NO_PROXY="localhost,127.0.0.1"
使用 go env
检查设置
设置好代理后,你可以使用以下命令来检查 Go 的环境变量,确认是否设置正确:
go env
这将显示 Go 的所有环境变量,包括代理相关的设置。如果 HTTP_PROXY
和 HTTPS_PROXY
被正确设置,你应该能在输出中看到它们的值。
总结
- 设置
HTTP_PROXY
和HTTPS_PROXY
来让 Go 使用系统代理。 - 如果需要,配置
NO_PROXY
来排除某些地址不走代理。 - 可以将这些设置添加到
$PROFILE
文件中,使其永久生效。