golang初学:交叉编译
go version go1.22.1 windows/amd64
Windows 11 + amd64
x86_64 x86_64 GNU/Linux
---
序章
golang 支持 跨平台,支持的方式 是 在一个平台 编译其它平台的可执行程序。
本文 介绍 Windows 11(开发主机) 上 编译 Linux(目标主机) 上的可执行程序。
#go build
开发主机 和 目标主机 的架构相同:x86_64
执行
查看 go 环境变量:
> go env set GO111MODULE=on set GOHOSTARCH=amd64 set GOOS=windows …… |
修改其中的 GOOS 为 linux(全小写),命令:
>go env -w GOOS="linux" |
执行编译:
>go build |
编译 成功,生成 web001 文件——Linux 可执行的。
拷贝 web001 到 目标主机(scp 命令):
scp web001 username@iporhost:/target/directory |
成功拷贝过去后,web001 是 不可执行的,使用 chmod 修改权限即可:
# chmod +x web001 |
执行&测试 web001:
# nohup ./web001 & |
# ps -ef | grep web root 439426 439378 0 20:31 pts/1 00:00:00 ./web001 |
web001 是一个 web程序,使用 curl 测试接口,成功,不再赘述。
改名
将 web001 改名为 app001,运行,成功。
就这么简单?
TODO 除了 amd64(x86_64)外,还支持那些架构呢?看了 go help build 命令的内容,应该还支持下面的 os+芯片架构 组合:
Supported only on linux/amd64, freebsd/amd64, darwin/amd64, darwin/arm64, windows/amd64, |
两个 *asn 还提到了:linux/loong64(龙芯)。
还没用过这些参数。
说明,介绍 GOOS、GOARCH 的 官方文档 今天看到过,但现在 找不到了。
命令小结
- >go env -w GOOS="linux"
>go build
>scp web001 username@iporhost:/target/directory - # chmod +x web001
# nohup ./web001 &
# ps -ef | grep web
# curl
---END---
本文链接:
https://www.cnblogs.com/luo630/p/18170501
ben发布于博客园
参考资料
1、go build 成不同环境的方法:mac、linux、windows
php-goland@疯狂编程爱好者
已于 2022-10-10 17:20:11 修改
https://blog.csdn.net/qq_41672878/article/details/119410602
2、Win10系统下设置Go环境变量
https://www.cnblogs.com/yunfan1024/p/13497686.html
3、
ben发布于博客园
ben发布于博客园