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 에서 확인 하였다
댓글 남기기