Go语言交叉编译,跨平台执行

2023-03-05 16:41:19 浏览数 (2)

原文转载自,助安社区(https://secself.com/)

交叉编译

程序交叉编译后就可以在各操作系统执行,非Java或Python依赖虚拟机,Go编译后不依赖虚拟机。

交叉编译大家要理解三个概念内核架构

代码

代码语言:go复制
package main

import "fmt"

func main() {
	fmt.Println("https://secself.com")
}

内核:

内核是操作系统的核心,windows不必多说,Linux家族主流内核freebsd、netbsd、solaris等。Mac内核darwin,Darwin 是一种Unix-like(类Unix)操作系统。

架构:

目前市面上的CPU架构为X86armamdintel属于X86架构。

X86架构性能好,耗电多、电压高,主要用于PC机、服务器。

ARM架构耗电少、电压低,单核性能低于X86,主要用于移动设备。

位:

X86一般是指32位的系统,X64就是64位的系统。X64本质上也是X86的一个版本,确切来说,应该叫x86_64,可以简单理解成X86的下一代版本。

Go支持的平台

$GOOS

$GOARCH

darwin

386

darwin

amd64

darwin

arm

darwin

arm64

dragonfly

amd64

freebsd

386

freebsd

amd64

freebsd

arm

linux

386

linux

amd64

linux

arm

linux

arm64

linux

ppc64

linux

ppc64le

netbsd

386

netbsd

amd64

netbsd

arm

openbsd

386

openbsd

amd64

openbsd

arm

plan9

386

plan9

amd64

solaris

amd64

windows

386

windows

amd64

windows

arm

windows

arm64

Windows

编译windows平台可执行文件

代码语言:shell复制
$ GOOS=windows GOARCH=amd64 go build test.go

Linux

编译Linux平台可执行文件

代码语言:shell复制
$ GOOS=linux GOARCH=amd64 go build test.go

Mac

代码语言:shell复制
$ GOOS=darwin GOARCH=amd64 go build test.go

参考

  • https://blog.csdn.net/weixin_42615026/article/details/125441606
  • https://juejin.cn/post/6952764346648756237

0 人点赞