LainyZine: 프로그래머 가이드 🐣

애플 실리콘 M1 용 Go 설치(Darwin/ARM64v8, 1.16 이상)

프로그래밍 언어 Go는 Robert Griesemer, Rob Pike, Ken Thompson이 디자인하고 구글에서 지원하고 있는 오픈소스 프로그래밍 언어입니다. Go는 C와 비슷한 문법을 가진 정적 컴파일 언어로 시스템 프로그래밍, 웹 프로그래밍, 인프라스트럭처 분야에서 많은 사랑을 받고 있습니다. 이 글에서는 애플 실리콘 M1 칩을 탑재한 맥에서 애플 실리콘 용 Go를 설치하는 방법을 소개합니다.

애플 실리콘 용(ARMv8) Go 직접 다운로드하기

Go 언어는 초기부터 다양한 아키텍처와 운영체제를 지원하기 위해 노력해왔습니다. 이 여정에 관해서는 Go 공식 블로그에서 읽어볼 수 있습니다.

2020년 12월 애플 실리콘 M1을 탑재한 맥북이 발표된 이후 Go에서도 애플 실리콘 지원을 위한 베타 테스트를 진행했으면 2021년 2월 16일 공식적으로 애플 실리콘의 아키텍처 ARM64v8를 지원하는 macOS 버전이 공식적으로 릴리스되었습니다.

애플 실리콘 ARM64v8 아키텍처를 지원하는 Go 1.16버전은 공식 사이트에서 다운로드 받을 수 있습니다. 다운로드는 크게 ARMv8 아키텍처로 빌드된 압축파일과 설치형 패키지 파일로 제공됩니다. 사용자는 원하는 버전을 선택해서 다운로드 받으면 됩니다. x86-64(amd64)는 Intel CPU를 지원하는 버전입니다.

애플 실리콘을 지원하는 Go 설치 파일

글 작성 시점에서 최신 버전은 1.16.4이며, 압축 파일 go.16.x.darwin-amd64.tar.gz이나 인스톨러 go.16.x.darwin-amd64.pkg를 다운로드 받아서 설치하면 됩니다.

pkg 파일을 다운로드 받아 실행하면 아래와 같이 설치가 진행됩니다.

프로그래밍 언어 Go 인스톨러

인스톨러의 안내대로 설치를 진행하고 나면, 시스템에서 Go를 사용할 수 있습니다.

$ go version
go version go1.16.4 darwin/arm64

압축 파일이나 패키지로 설치하는 경우 정확히 원하는 옵션을 선택해서 설치할 수 있다는 장점이 있습니다만, Go를 직접 관리해야하는 불편함이 있습니다. 따라서 직접 설치하기보다는 패키지 관리자 Homebrew로 설치하는 방법을 더 추천합니다.

Homebrew로 애플 실리콘 용 Go 설치하는 방법

Homebrew 패키지 관리자를 사용하면 Go를 더 쉽게 설치하고 사용하는 게 가능합니다. Homebrew로 Go를 설치하려면 먼저 M1 용 Homebrew를 설치해야합니다.

Homebrew 패키지의 애플 실리콘 지원 여부는 아래 페이지에서 확인할 수 있습니다.

애플 실리콘에 체크가 되어있는 것을 확인할 수 있습니다. (단, 현재 Homebrew에 등록된 Go 최신 버전은 1.16.3으로 직접 다운로드 받을 수 있는 버전보다는 버전이 조금 낮습니다.)

brew install 명령어로 Go를 설치해보겠습니다.

$ brew install go
==> Downloading https://ghcr.io/v2/homebrew/core/go/manifests/1.16.3
Already downloaded: /Users/lainyzine/Library/Caches/Homebrew/downloads/a0c7d5540c8c88f612cedc7d9af128deb15aa152ce0b0f2e1bcd3d8f235020f5--go-1.16.3.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:e7c1efdd09e951eb46d01a3200b01e7fa55ce285b75470051be7f
Already downloaded: /Users/lainyzie/Library/Caches/Homebrew/downloads/3e40d7e039de58a86bfd79b09414422d9f597c3cb84c28b412f178c6cd84db47--go--1.16.3.arm64_big_sur.bottle.tar.gz
==> Pouring go--1.16.3.arm64_big_sur.bottle.tar.gz
🍺  /opt/homebrew/Cellar/go/1.16.3: 9,955 files, 504.9MB

Brew에서 Go를 설치할 때도, 내부적으로는 Go에서 제공하는 공식 바이너리를 다운로드 받아 적절한 위치에 설정합니다. 실제로 Go가 어떻게 설치가 되는지는 Homebrew 포뮬러 파일을 통해 확인할 수 있습니다.

설치된 Go 버전을 확인해보겠습니다.

$ go version
go version go1.16.3 darwin/arm64

1.16.3이 설치된 것을 확인할 수 있습니다. 간단한 Go 프로그램을 작성해 실제로 Apple 아키텍처로 실행되는지 확인해보겠습니다.

package main
import "time"

func main() {
    time.Sleep(30 * time.Second)
}

위 내용을 /tmp/test.go 파일로 저장합니다. 이 프로그램은 단순히 30초 동안 슬립한 다음 종료됩니다. go run을 사용하면 명시적으로 빌드하지 않고도 Go 프로그램을 실행할 수 있습니다. 아래 명령어를 실행합니다.

$ go run /tmp/test.go

활성 상태 보기 앱을 실행해서 실행중인 go 명령어를 찾아 아키텍처를 확인해봅니다.

Go가 Apple 아키텍처로 실행된 것을 확인할 수 있습니다

Apple 아키텍처로 실행중인 것을 확인할 수 있습니다.

1.16 이하 구 버전을 설치해서 사용하는 방법(darwin/amd64)

Go 1.16 이하 버전은 공식적으로 macOS 애플 실리콘 버전을 지원하지 않습니다만, Intel CPU를 지원하는 amd64(x86-64) 아키텍처 버전을 사용하는 게 가능합니다. macOS에서는 로제타 2로 M1 CPU에서 Intel CPU 아키텍처로 빌드된 애플리케이션도 실행할 수 있습니다.

여기서는 테스트로 Go1.15.2.darwin-amd64.tar.gz를 다운로드 받아 Download 디렉터리에서 직접 압축을 풀어주었습니다. 별도로 실행 PATH를 잡아주지 않고, 바로 실행해보겠습니다.

$ cd ~/Downloads/go
$ ./bin/go version
go version go1.15.12 darwin/amd64

Intel CPU를 지원하는 darwin/amd64 아키텍처 용 1.15.2 버전을 확인할 수 있습니다. 앞에서 작성한 프로그램을 실행해봅니다.

$ ./bin/go run /tmp/test.go

go 프로그램이 실행중인 상태에서 활성 상태 보기를 열고, go를 찾아봅니다. 아래와 같이 아키텍처가 Intel인 것을 확인할 수 있습니다.

Intel 아키텍처로 실행된 Go 프로세스

사용은 가능하지만, 이왕이면 애플 실리콘을 지원하는 1.16 이상 버전 사용을 추천합니다.

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.