खोज…


परिचय

गो संकलक कई प्लेटफार्मों, अर्थात प्रोसेसर और सिस्टम के लिए बायनेरिज़ का उत्पादन कर सकता है। अधिकांश अन्य संकलक के विपरीत, क्रॉस-संकलन के लिए कोई विशिष्ट आवश्यकता नहीं है, यह नियमित संकलन के रूप में उपयोग करना आसान है।

वाक्य - विन्यास

  • 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 ) फाइल को अपने टारगेट मशीन में कॉपी करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow