Go
क्रॉस संकलन
खोज…
परिचय
गो संकलक कई प्लेटफार्मों, अर्थात प्रोसेसर और सिस्टम के लिए बायनेरिज़ का उत्पादन कर सकता है। अधिकांश अन्य संकलक के विपरीत, क्रॉस-संकलन के लिए कोई विशिष्ट आवश्यकता नहीं है, यह नियमित संकलन के रूप में उपयोग करना आसान है।
वाक्य - विन्यास
- GOOS = linux GOARCH = amd64 गो बिल्ड
टिप्पणियों
समर्थित ऑपरेटिंग सिस्टम और आर्किटेक्चर लक्ष्य संयोजन (स्रोत)
$ GOOS | $ GOARCH |
---|---|
एंड्रॉयड | हाथ |
डार्विन | 386 |
डार्विन | amd64 |
डार्विन | हाथ |
डार्विन | arm64 |
ड्रैगनफ्लाई | amd64 |
FreeBSD | 386 |
FreeBSD | amd64 |
FreeBSD | हाथ |
linux | 386 |
linux | amd64 |
linux | हाथ |
linux | arm64 |
linux | ppc64 |
linux | ppc64le |
linux | mips64 |
linux | mips64le |
NetBSD | 386 |
NetBSD | amd64 |
NetBSD | हाथ |
OpenBSD | 386 |
OpenBSD | amd64 |
OpenBSD | हाथ |
plan9 | 386 |
plan9 | amd64 |
सोलारिस | amd64 |
खिड़कियाँ | 386 |
खिड़कियाँ | amd64 |
Makefile का उपयोग करके सभी आर्किटेक्चर को संकलित करें
यह मेकफाइल कंपाइल को पार करेगा और विंडोज, मैक और लिनक्स (ARM और x86) के लिए एक्जीक्यूटिव को ज़िप करेगा।
# Replace demo with your desired executable name
appname := demo
sources := $(wildcard *.go)
build = GOOS=$(1) GOARCH=$(2) go build -o build/$(appname)$(3)
tar = cd build && tar -cvzf $(1)_$(2).tar.gz $(appname)$(3) && rm $(appname)$(3)
zip = cd build && zip $(1)_$(2).zip $(appname)$(3) && rm $(appname)$(3)
.PHONY: all windows darwin linux clean
all: windows darwin linux
clean:
rm -rf build/
##### LINUX BUILDS #####
linux: build/linux_arm.tar.gz build/linux_arm64.tar.gz build/linux_386.tar.gz build/linux_amd64.tar.gz
build/linux_386.tar.gz: $(sources)
$(call build,linux,386,)
$(call tar,linux,386)
build/linux_amd64.tar.gz: $(sources)
$(call build,linux,amd64,)
$(call tar,linux,amd64)
build/linux_arm.tar.gz: $(sources)
$(call build,linux,arm,)
$(call tar,linux,arm)
build/linux_arm64.tar.gz: $(sources)
$(call build,linux,arm64,)
$(call tar,linux,arm64)
##### DARWIN (MAC) BUILDS #####
darwin: build/darwin_amd64.tar.gz
build/darwin_amd64.tar.gz: $(sources)
$(call build,darwin,amd64,)
$(call tar,darwin,amd64)
##### WINDOWS BUILDS #####
windows: build/windows_386.zip build/windows_amd64.zip
build/windows_386.zip: $(sources)
$(call build,windows,386,.exe)
$(call zip,windows,386,.exe)
build/windows_amd64.zip: $(sources)
$(call build,windows,amd64,.exe)
$(call zip,windows,amd64,.exe)
(सावधान रहें कि मेकफाइल को हार्ड टैब्स की जरूरत है न कि स्पेस की )
गो बिल्ड के साथ सरल क्रॉस संकलन
अपनी परियोजना निर्देशिका से, go build
कमांड GOARCH
और GOOS
और GOARCH
पर्यावरण चर के साथ ऑपरेटिंग सिस्टम और आर्किटेक्चर लक्ष्य निर्दिष्ट करें:
मैक के लिए संकलन (64-बिट):
GOOS=darwin GOARCH=amd64 go build
Windows x86 प्रोसेसर के लिए संकलन:
GOOS=windows GOARCH=386 go build
आप आर्किटेक्चर पर नज़र रखने के लिए मैन्युअल रूप से आउटपुट निष्पादन योग्य का फ़ाइल नाम सेट करना चाह सकते हैं:
GOOS=windows GOARCH=386 go build -o appname_win_x86.exe
संस्करण 1.7 और उसके बाद से आप सभी संभावित GOOS और GOARCH संयोजनों की एक सूची प्राप्त कर सकते हैं:
go tool dist list
(या आसान मशीन की खपत के go tool dist list -json
)
Gox का उपयोग करके क्रॉस संकलन
क्रॉस संकलन के लिए एक और सुविधाजनक समाधान है gox
का उपयोग: https://github.com/mitchellh/gox
स्थापना
संस्थापन बहुत आसानी से किया जाता है, जिसे go get github.com/mitchellh/gox
करने के go get github.com/mitchellh/gox
। परिणामी निष्पादन योग्य गो की बाइनरी निर्देशिका, जैसे /golang/bin
या ~/golang/bin
पर रखा जाता है। सुनिश्चित करें कि यह फोल्डर आपके रास्ते का हिस्सा है, ताकि किसी अनियंत्रित स्थान से gox
कमांड का उपयोग किया जा gox
।
प्रयोग
गो प्रोजेक्ट के रूट फोल्डर के भीतर (जहां आप उदाहरण के लिए जैसे go build
), किसी भी आर्किटेक्चर (जैसे x86, ARM) और ऑपरेटिंग सिस्टम (जैसे लिनक्स, macOS, विंडोज) के लिए सभी संभव बायनेरिज़ बनाने के लिए gox
निष्पादित करें जो उपलब्ध है।
एक निश्चित ऑपरेटिंग सिस्टम के लिए निर्माण करने के लिए, इसके बजाय gox -os="linux"
उपयोग करें। इसके अलावा आर्किटेक्चर विकल्प को परिभाषित किया जा सकता है: gox -osarch="linux/amd64"
।
सरल उदाहरण: लिनक्स मशीन पर बांह की वास्तुकला के लिए helloworld.go संकलित करें
Helloworld.go तैयार करें (नीचे देखें)
package main
import "fmt"
func main(){
fmt.Println("hello world")
}
भागो GOOS=linux GOARCH=arm go build helloworld.go
जनरेट किए गए helloworld
(आर्म helloworld
) फाइल को अपने टारगेट मशीन में कॉपी करें ।