go 語言如何跨平台編譯


evio源碼的分析來說明:

我們看到在有些文件的頭部有這樣一個標識:文件鏈接:https://github.com/tidwall/evio/blob/master/evio_unix.go

// +build darwin netbsd freebsd openbsd dragonfly linux  它表示的是這個文件只在darwin netbsd openbsd dragonfly linux 平台下編譯成功。

而有些文件是這樣的標識:文件鏈接:https://github.com/tidwall/evio/blob/master/evio_other.go

// +build !darwin,!netbsd,!freebsd,!openbsd,!dragonfly,!linux  前面加!表示不支持這個平台的編譯

還有一部分文件是沒有+build這行注釋,由此可知go語言編寫的文件,如果想區分不同平台的編譯只需在文件的首部加上// +build標識,如果不添加那么默認是支持所有平台的編譯。

那么支持的平台到底有哪些呢?參考鏈接:https://github.com/golang/go/blob/master/src/go/build/syslist.go

// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package build

const goosList = "aix android darwin dragonfly freebsd hurd js linux nacl netbsd openbsd plan9 solaris windows zos "
const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc riscv riscv64 s390 s390x sparc sparc64 wasm "

可以看到支持的平台和架構還是很多的。

當然還有一種方式是指定當前go的環境變量GOOS and GOARCH


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM