【前言】
本章主要讲的是go程序如何兼容各种架构系统以及架构之间的区别
直接上干货,直接执行下面的指令,将GOOS(平台)和GOARCH(架构)就可以解决大部分架构兼容问题
GOOS=linux GOARCH=amd64 go build test.go
✔是不是很简单呀,确实是的,接下来就解释一下【平台有哪些】、【架构有哪些】、【为什么go程序可以兼容不同架构的那些事情】
【什么是交叉编译】
程序交叉编译后就可以在各操作系统执行,非Java或Python依赖虚拟机,Go编译后不依赖虚拟机。
【平台分为几种】
-
PC段:linux、windows、darwin(苹果系统 Mac os)、aix(IBM操作系统 如AIX 5L)
-
手机系统:android、ios(苹果)
【架构分为几种】
常见的有386(英特尔)、amd、arm
386
: 英特尔,常用于作为中央处理单元(CPU)
X86
:包含有amd
和intel
,架构性能好,耗电多、电压高,主要用于PC机、服务器,
ARM
:架构耗电少、电压低,单核性能低于X86
,主要用于移动设备、手机、路由器。
【X86,64位是指什么?】
X86
一般是指32位
的系统,X64
就是64位
的系统。
X64
本质上也是X86
的一个版本,确切来说,应该叫x86_64
,可以简单理解成X86
的下一代版本。
结尾,写一个一次性go交叉编译的sh脚本
#!/usr/bin/bash
archs=(amd64 arm64)
for arch in ${archs[@]}
do
env GOOS=linux GOARCH=${arch} go build -o prepnode_${arch}
done