[GOlang] golang 크로스 컴파일

golang 의 크로스 컴파일 기능

ref. https://go.dev/doc/install/source

package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}

hello world 를 준비
window 에서 linux 까지 빌드 하는 것을 기준으로 진행 한다

D:\hellowolrd> go mod init helloworld
D:\hellowolrd> go build helloworld.go
D:\hellowolrd> helloworld.exe
helloworld

window 에서 정상 빌드 실행까지 확인

D:\helloworld>set GOOS=linux

D:\helloworld>set GOARCH=amd64

D:\helloworld>go build helloworld.go

D:\helloworld>dir
 D 드라이브의 볼륨: 새 볼륨
 볼륨 일련 번호: F8D7-B50C

 D:\helloworld> 디렉터리

2022-06-07  오전 10:24    <DIR>          .
2022-06-07  오전 10:24    <DIR>          ..
2022-06-07  오전 10:03                27 go.mod
2022-06-07  오전 10:24         1,762,644 helloworld
2022-06-07  오전 10:22         1,892,352 helloworld.exe
2022-06-07  오전 10:08                85 helloworld.go
               4개 파일           3,655,108 바이트
               2개 디렉터리  1,106,005,667,840 바이트 남음

위와 같이 . exe 가 붙지 않은 바이너리가 빌드되어 생성되는것을 확인 할 수 있다

다른 os/arch 빌드를 위해 필요한 내용은 go 를 위한 환경 변수 중
GOOS
GOARCH
두가지를 설정 해 주면 된다

아래와 같은 os / arch 조합을 사용할 수 있다

$GOOS		$GOARCH
aix			ppc64
android		386
android		amd64
android		arm
android		arm64
darwin		amd64
darwin		arm64
dragonfly	amd64
freebsd		386
freebsd		amd64
freebsd		arm
illumos		amd64
ios			arm64
js			wasm
linux		386
linux		amd64
linux		arm
linux		arm64
linux		ppc64
linux		ppc64le
linux		mips
linux		mipsle
linux		mips64
linux		mips64le
linux		riscv64
linux		s390x
netbsd		386
netbsd		amd64
netbsd		arm
openbsd		386
openbsd		amd64
openbsd		arm
openbsd		arm64
plan9		386
plan9		amd64
plan9		arm
solaris		amd64
windows		386
windows		amd64
windows		arm
windows		arm64

생성된 linux 바이너리는 linux 머신으로 옮겨

실행권한을 포함해 실행 확인이 가능하다

대상 os 는 centos 7 에서 확인 하였다


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다