go语言跨平台跨架构编译

其实我也是个go程序员啊,

发这个贴也道歉把,怕谁没事找事,还是为了自己看不乐意老收藏别人也不能分类麻烦 ,

讨论技术之外勿扰 , 并不是什么商用所以别烦我.  whaosoft aiot http://143ai.com

Go语言跨平台跨架构编译成不需要依赖的静态二进制可执行文件,使得Go语言在微服务部署运维上具有很大的优势。

Go编译时通过GOOS环境变量判断目标平台,通过GOARCH判断目标架构。

平台列表

架构列表

编译

在进行跨平台跨架构编译时,只需要制定GOOS和GOARCH环境变量就可以编译指定的平体架构的目标成果物。

GOOS=${goos} GOARCH=${goarch} go build .

注意:CGO跨平台跨架构需要配置交叉编译环境。

条件编译

有时针对不同的平台、架构,在代码中需要进行额外的处理,因此需要在代码中区分平台和架构。

Go语言通过关键字+build在编译时对平台和就够进行区分。

例如:在linux平台,386架构或者darwin平台,非cgo时编译

// +build linux,386 darwin,!cgo

还可以采用并列的写法。例如:

// +build linux darwin // +build amd64

结束语

Go语言跨平台跨架构不像java,python等需要依赖运行时环境的语言,Go编译出来的可执行文件可以直接运行。

龙芯的架构是自研的LoongISA指令系统,兼容MIPS架构,所以理论上使用Go编译出来的可执行文件,也可以在龙芯上运行。

猜你喜欢

转载自blog.csdn.net/qq_29788741/article/details/126548801