수색…


소개

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 명령을 실행하고 GOOS 및 GOARCH 환경 변수를 사용하여 운영 체제 및 아키텍처 대상을 지정하십시오.

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