GoLang 全平台编译

Golang的全平台编译简直太爽了。
拥有一台windows电脑就能开发出在Linux、Windows、Mac上面直接运行的程序。
只需要在编译的时候这样做:

# 在Windows平台编译Linux可执行文件
F:\github\syncFiles\goApi\apiDesign>set CGO_ENABLED=0

F:\github\syncFiles\goApi\apiDesign>set GOARCH=amd64

F:\github\syncFiles\goApi\apiDesign>set GOOS=linux

F:\github\syncFiles\goApi\apiDesign>go build demo.go
warning: GOPATH set to GOROOT (C:\Program Files\Go) has no effect

然后就能放在Linux平台上执行了:
L1
这种操作在Linux、Windows、Mac上都是支持的,也就是说:
Linux 上可以执行编译 【Linux、Windows、Mac】
Mac上也可以执行编译 【Linux、Windows、Mac】

具体细节参考了网上的博客Go Build 多平台构建

包括三个设置的参数:

  • GOARCH:编译目标平台的硬件体系架构(amd64, 386, arm, ppc64等)。
  • GOOS:编译目标平台上的操作系统(darwin, freebsd, linux, windows)。
  • CGO_ENABLED:代表是否开启CGO,1表示开启,0表示禁用。由于CGO不能支持交叉编译,所以需要禁用。

包括三个平台:
1、Mac下编译Linux, Windows平台的64位可执行程序:

$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go  
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go 

2、 Linux下编译Mac, Windows平台的64位可执行程序:

$ CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go  
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go 

3、 Windows下编译Mac, Linux平台的64位可执行程序:

$ set CGO_ENABLED=0 set GOOS=darwin3 set GOARCH=amd64 go build test.go  
$ set CGO_ENABLED=0 set GOOS=linux s GOARCH=amd64 go build test.go

当然如果编译过其他平台后,程序 go run main.go 执行会有一些问题:
报错如下:

F:\github\syncFiles\goApi\ipDemo>go run main.go
warning: GOPATH set to GOROOT (C:\Program Files\Go) has no effect
exec: "C:\\Users\\dell\\AppData\\Local\\Temp\\go-build2490838331\\b001\\exe\\main": file does not exist

这里只需要:

F:\github\syncFiles\goApi\ipDemo>set GOOS=windows

F:\github\syncFiles\goApi\ipDemo>go run main.go
warning: GOPATH set to GOROOT (C:\Program Files\Go) has no effect
192.168.5.107

main.go 是一个显示本机IP地址的程序。
这样做就没有问题了。

### Golang 跨平台编译针对 AIX 操作系统的指南 为了实现 Go 语言程序在 AIX 上的跨平台编译开发者需遵循特定环境配置流程以及理解目标操作系统的特性。 #### 设置 GOOS 和 GOARCH 环境变量 Go 编译器通过设置 `GOOS` 和 `GOARCH` 来指定目标操作系统和架构。对于 AIX 平台而言: ```bash export GOOS=aix export GOARCH=ppc64 ``` 这些命令告知 Go 编译工具链为目标系统准备可执行文件[^1]。 #### 安装必要的开发工具和支持库 确保主机上已安装完整的 Go 开发环境,并且具备访问网络的能力以便下载所需的依赖项。由于 AIX 的特殊性,在某些情况下可能还需要额外的支持库来满足应用程序的需求。这通常涉及安装 GCC 或者 IBM XL C/C++ Compiler 及其关联头文件和静态链接库[^2]。 #### 构建过程中的注意事项 当涉及到复杂的项目结构时,建议先清理之前的构建产物再重新编译,防止遗留文件干扰新版本生成: ```bash go clean -all CGO_ENABLED=0 go build -o myapp.aix.ppc64 . ``` 这里设置了 `CGO_ENABLED=0` 参数以禁用 cgo 功能,从而简化二进制文件移植性和兼容性问题处理;同时也指定了输出文件名为适合于分发给 AIX 用户的形式[^3]。 #### 测试与验证 完成编译之后应当尽可能多地运行单元测试案例集,尤其是那些专门设计用来检验不同平台上行为差异的部分。如果存在集成测试,则同样应该被执行以确认整个应用能在预期环境中正常运作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值