Golang 컴파일 옵션정리, build , run
by 개발자   2024-11-20 10:09:45   조회수:46

Go 언어에서 실행, 빌드, 배포와 관련된 주요 명령어와 옵션들을 정리해보겠습니다.

1. 실행 (Execution)

Go 프로그램을 실행하는 명령어는 go run입니다. go run은 컴파일과 실행을 동시에 처리하며, 별도의 실행 파일을 생성하지 않습니다.

go run 명령어

  • go run <파일명>
    Go 파일을 컴파일하고 바로 실행합니다. 파일을 하나만 실행할 때 사용합니다.


    go run main.go
  • go run <파일1> <파일2>
    여러 개의 Go 파일을 동시에 실행할 수 있습니다.


    go run main.go helper.go
  • go run -v <파일명>
    실행 시 자세한 정보를 출력합니다. 디버깅용으로 유용합니다.


    go run -v main.go
  • go run -race <파일명>
    경쟁 상태(race condition)를 검사하면서 프로그램을 실행합니다. 동시성 문제를 확인하는 데 유용합니다.


    go run -race main.go

2. 빌드 (Build)

Go 프로그램을 빌드하여 실행 파일을 생성하려면 go build 명령어를 사용합니다.

go build 명령어

  • go build
    현재 디렉토리의 Go 파일을 컴파일하여 실행 파일을 생성합니다. 실행 파일의 이름은 기본적으로 디렉토리 이름과 동일합니다.


    go build
  • go build <파일명>
    특정 Go 파일을 컴파일하여 실행 파일을 생성합니다.


    go build main.go
  • go build -o <출력파일명>
    출력되는 실행 파일의 이름을 지정할 수 있습니다. 기본적으로는 디렉토리 이름과 동일한 이름의 파일이 생성됩니다.


    go build -o myprogram main.go
  • go build -v
    빌드 시 진행 상황에 대한 자세한 정보를 출력합니다.


    go build -v
  • go build -a
    모든 패키지를 다시 빌드합니다. 종속 패키지나 라이브러리가 변경되었을 때 유용합니다.


    go build -a
  • go build -x
    빌드 과정에서 실행되는 명령들을 출력합니다. 컴파일 과정에서 어떤 명령이 실행되는지 확인할 수 있습니다.


    go build -x

3. 배포 (Deployment)

Go에서 배포는 주로 빌드된 실행 파일을 다른 환경에 배포하는 과정을 말합니다. Go는 크로스 컴파일을 지원하여 다른 운영 체제나 아키텍처에 맞는 실행 파일을 쉽게 만들 수 있습니다.

크로스 컴파일을 위한 go build 명령어

  • GOOSGOARCH 환경 변수 사용
    Go는 기본적으로 현재 시스템의 운영 체제(OS)와 아키텍처(ARCH)에 맞는 실행 파일을 생성합니다. 크로스 컴파일을 통해 다른 시스템용 실행 파일을 만들 수 있습니다.
    예를 들어, Windows 용 실행 파일을 만들려면:


    GOOS=windows GOARCH=amd64 go build -o myprogram.exe main.go

    기타 주요 환경 변수:

    • GOOS: 운영 체제 (예: linux, windows, darwin (macOS), freebsd)
    • GOARCH: 아키텍처 (예: amd64, 386, arm, arm64)
  • GOOS=linux GOARCH=amd64 go build -o myprogram main.go
    리눅스용 64비트 실행 파일을 빌드합니다.

  • GOOS=darwin GOARCH=amd64 go build -o myprogram main.go
    macOS용 64비트 실행 파일을 빌드합니다.

  • 배포 시에 주의할 점:

    • 의존성 관리: Go 모듈(go.mod)을 사용하여 의존성을 명확하게 관리합니다.
    • go mod tidy: 모듈을 정리하고, 필요한 의존성을 자동으로 추가하거나 제거합니다.

      go mod tidy
  • 컨테이너 배포 (Docker): Go 프로그램은 독립적인 실행 파일로 빌드되기 때문에 Docker와 같은 컨테이너 환경에서 실행하기 매우 유리합니다. 예를 들어, Dockerfile을 사용하여 Go 애플리케이션을 컨테이너화할 수 있습니다.


    FROM golang:1.20-alpine WORKDIR /app COPY . . RUN go mod tidy RUN go build -o myprogram main.go CMD ["./myprogram"]
  • CI/CD 통합: Go 프로젝트는 GitHub Actions, GitLab CI, Jenkins 등과 같은 CI/CD 툴과 통합하여 자동 빌드 및 배포를 할 수 있습니다.


예시: 전체 워크플로우

  1. 빌드:


    go build -o myprogram main.go
  2. 크로스 컴파일 (Linux용):


    GOOS=linux GOARCH=amd64 go build -o myprogram main.go
  3. 배포:

    • 생성된 myprogram을 서버나 클라우드 환경에 배포합니다.
    • Docker와 CI/CD 파이프라인을 사용하여 자동 배포를 설정할 수도 있습니다.

이렇게 Go 언어에서 실행, 빌드, 배포 관련 명령어와 옵션을 활용하여 효율적인 개발과 배포 작업을 할 수 있습니다.