수색…


소개

Go 컴파일러는 많은 플랫폼, 즉 프로세서 및 시스템 용 바이너리를 생성 할 수 있습니다. 대부분의 다른 컴파일러와 달리, 크로스 컴파일에 대한 특별한 요구 사항은 없으며, 일반적인 컴파일과 같이 사용하기 쉽습니다.

통사론

  • GOOS = linux GOARCH = amd64 go 빌드

비고

지원되는 운영 체제 및 아키텍처 대상 조합 (원본)

$ GOOS $ GOARCH
기계적 인조 인간
다윈 386
다윈 amd64
다윈
다윈 arm64
잠자리 amd64
freebsd 386
freebsd amd64
freebsd
리눅스 386
리눅스 amd64
리눅스
리눅스 arm64
리눅스 ppc64
리눅스 ppc64le
리눅스 mips64
리눅스 mips64le
netbsd 386
netbsd amd64
netbsd
openbsd 386
openbsd amd64
openbsd
계획 9 386
계획 9 amd64
솔라리스 amd64
창문들 386
창문들 amd64

Makefile을 사용하여 모든 아키텍처 컴파일

이 Makefile은 Windows, Mac 및 Linux (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)

( Makefile의 하드 탭은 공백이 아닌지 조심해야한다)

이동 빌드로 간단한 크로스 컴파일

프로젝트 디렉토리에서 GOARCH go build 명령을 실행하고 GOOSGOARCH 환경 변수를 사용하여 운영 체제 및 아키텍처 대상을 지정하십시오.

Mac (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의 바이너리 디렉토리 (예 : /golang/bin 또는 ~/golang/bin 됩니다. 임의의 위치에서 gox 명령을 사용하려면이 폴더가 경로의 일부인지 확인하십시오.

용법

Go 프로젝트의 루트 폴더 (예 : go build 를 수행하는 곳)에서 gox 를 실행하여 사용 가능한 아키텍처 (예 : x86, ARM) 및 운영 체제 (예 : Linux, macOS, Windows)에 대한 가능한 모든 바이너리를 빌드하십시오.

특정 운영 체제 용으로 빌드하려면 예를 들어 gox -os="linux" 대신 사용하십시오. 또한 아키텍처 옵션을 정의 할 수 있습니다 : gox -osarch="linux/amd64" .

간단한 예제 : Linux 컴퓨터에서 arm 아키텍처 용 helloworld.go 컴파일

helloworld.go 준비 (아래에서 찾으십시오)

package main

import "fmt"

func main(){
        fmt.Println("hello world")
}

GOOS=linux GOARCH=arm go build helloworld.go 실행 GOOS=linux GOARCH=arm go build helloworld.go

생성 된 helloworld (arm 실행 파일) 파일을 대상 시스템에 복사 합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow