交叉编译的终极版本[以此为准]:
windows编译窗口目前分为cmd窗口,powershell窗口,这两个里面运行的命令不一样。
1.cmd窗口编译;
在windows10之前的系统版本上使用cmd命令行可以使用命令
CMD命令行中
在CMD命令行中编译(示例编译64位linux程序),【打开一个cmd窗口一行行执行下面的命令;】
// 设置Linux编译环境
SET CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux// 开始编译
go build -o ./build/ ./main.go
备注:修改的环境只是在当前的cmd窗口修改,不影响整体环境,也就是这个窗口修改后,关闭,在重新打开就是还是默认的配置内容;
2.powershell窗口编译;
在powershell命令行中
在powershell命令行中编译(示例编译64位linux程序)
// 设置Linux编译环境
$env:CGO_ENABLED="0"
$env:GOOS="linux"
$env:GOARCH="amd64"// 开始编译
go build ./build/ ./main.go
3.设置环境后,在自己的命令行窗口运行 go env命令,查看你刚刚修改的参数是否修改了,修改后,即可进行编译;
set GOARCH=amd64
set GOOS=linux
3.1 cmd环境下的参数修改成功式样;
3.2powershell环境下的参数修改成功
4.这个窗口关闭后,默认参数还是原来的参数;,不用恢复命令
下面是历史版本;可以借鉴,但是不建议使用
===============================================
一、可以使用的编译环境
go env 查看编译的环境
1.编译linux 64环境[centos7以及以上版本]
go env -w GOOS="linux"
go env -w GOARCH="amd64"=============================
2.编译linux 32环境[centos6以及以下版本]
go env -w GOOS="linux"
go env -w GOARCH="386"3.windows10默认信息【修改上述linux环境的时候,在修复后回去】
系统默认:
go env -w GOOS="windows"
go env -w GOARCH="amd64"
备注:时刻关注 go env 命令查询上面的参数是否是你需要的
修改后的效果go env
使用后再修改会默认信息
编译命令:
go build -o ./"要生成的文件 .\源代码
go build -o ./w1N386 .\w1.go
打包后,把默认环境修改回去
win10系统默认:
go env -w GOOS="windows"
go env -w GOARCH="amd64"
下面都是历史内容:
==========================================
下面的的内容在win10 go1.20的版本上编译还是不好用
二、交叉编译事项
2.1查询当前交叉编译支持的版本【操作都是在编译器golangd的命令行下】
go tool dist list
查询当前交叉编译支持的版本
go tool dist list
2.2golang 交叉编译牵涉到三个变量
golang 交叉编译牵涉到三个变量
CGO_ENABLED = 0 #表示设置CGO工具不可用,使用go自己的编译器
GOOS:#目标操作系统
GOARCH #表示程序构建环境的目标计算架构 比如:386,amd64,arm,arm64,ppc64,ppc64le,mips,mipsle,mips64,mips64le
386为32位 amd64位64位系统
2.3编译命令的运行办法:【一个个命令运行,不要都是写在一行,单独都是一行】
在golang的终端修改,不影响整体的环境,修改后,你可以在外面找个终端,go env原来的环境保持不变。
linux 386{32位环境的配置}
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=386
go build -o ./w1 w1.go
2.4常在windows下编译其它平台的命令;
linux x64{64位环境的配置}
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -o./w1 w1.go
2.5注意事项
尽量不要用cmd的环境编译,在golang中编译或者
用powershell编译
在运行刚刚的命令进行编译
补充资料;========可以借鉴,没有必要使用!!!========
一、交叉编译环境问题解决
可选步骤:不一定好用
这个可以修改,成cmd的方式,但是后期再gobuild编译的时候容易出错
是不是cmd的版本低,不能支持go编译了
我是在windows10上采用交叉编译的办法,编译linux下的程序包括x64,i386也就是64位和32位的程序,使用默认的golang的终端编译报错
那如何修改成为“cmd”的终端的方式呢;
1.修改终端默认的powershell
打开golangd之后直接进去setting(设置)——>tools(工具)——>terminal(终端)——>shellpath(shell路径)——>点击右边那个指定到你下载的路径就可以了找到exe文件——>apply(应用)——>close(关闭)就完成
//windows下使用go编译器编译32位linux可执行程序
SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=386 go build w1.go
这回就是没有报错,问题解决