웹사이트 검색

Go 프로그램 구축 및 설치 방법


소개

지금까지 go run에서 소스 코드를 자동으로 컴파일하고 결과 실행 파일을 실행했습니다. 이 명령은 명령줄에서 코드를 테스트하는 데 유용하지만 애플리케이션을 배포하거나 배포하려면 코드를 공유 가능한 바이너리 실행 파일 또는 시스템 바이트 코드를 포함하는 단일 파일로 빌드해야 합니다. 애플리케이션. 이를 위해 Go 툴체인을 사용하여 프로그램을 빌드하고 설치할 수 있습니다.

Go에서 소스 코드를 바이너리 실행 파일로 변환하는 프로세스를 빌딩이라고 합니다. 이 실행 파일이 빌드되면 애플리케이션뿐만 아니라 대상 플랫폼에서 바이너리를 실행하는 데 필요한 모든 지원 코드도 포함됩니다. 즉, Go 바이너리는 새로운 시스템에서 실행하기 위해 Go 도구와 같은 시스템 종속성이 필요하지 않습니다. 이러한 실행 파일을 자신의 시스템에 있는 실행 파일 경로에 넣으면 시스템의 어디에서나 프로그램을 실행할 수 있습니다. 이것은 시스템에 프로그램을 설치하는 것과 같습니다.

이 자습서에서는 Go 도구 체인을 사용하여 샘플 Hello, World! 프로그램을 실행, 빌드 및 설치하여 향후 애플리케이션을 효과적으로 사용, 배포 및 배포할 수 있습니다.

전제 조건

이 문서의 예를 따르려면 다음이 필요합니다.

  • Go를 설치하고 로컬 프로그래밍 환경을 설정하는 방법에 따라 설정된 Go 작업 공간.

1단계 - Go 바이너리 설정 및 실행

먼저 Go 도구 체인을 시연하기 위한 예제로 사용할 애플리케이션을 만듭니다. 이를 위해 고전적인 "Hello, World!\를 사용합니다. Go 튜토리얼에서 첫 번째 프로그램을 작성하는 방법의 프로그램입니다.

src 디렉토리에 greeter라는 디렉토리를 만듭니다.

  1. mkdir greeter

그런 다음 새로 만든 디렉터리로 이동하고 원하는 텍스트 편집기에서 main.go 파일을 만듭니다.

  1. cd greeter
  2. nano main.go

파일이 열리면 다음 내용을 추가하십시오.

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

이 프로그램을 실행하면 Hello, World! 문구가 콘솔에 출력되고 프로그램이 성공적으로 종료됩니다.

파일을 저장하고 종료합니다.

프로그램을 테스트하려면 이전 자습서에서 수행한 것처럼 go run 명령을 사용합니다.

  1. go run main.go

다음과 같은 결과가 표시됩니다.

Output
Hello, World!

앞에서 언급했듯이 go run 명령은 소스 파일을 실행 가능한 바이너리로 빌드한 다음 컴파일된 프로그램을 실행했습니다. 그러나 이 튜토리얼은 마음대로 공유하고 배포할 수 있는 방식으로 바이너리를 빌드하는 것을 목표로 합니다. 이렇게 하려면 다음 단계에서 go build 명령을 사용합니다.

2단계 — Go 바이너리를 빌드하기 위한 Go 모듈 만들기

Go 프로그램과 라이브러리는 모듈의 핵심 개념을 중심으로 구축됩니다. 모듈에는 프로그램에서 사용하는 라이브러리와 사용할 해당 라이브러리 버전에 대한 정보가 포함되어 있습니다.

이것이 Go 모듈임을 Go에 알리려면 go mod 명령을 사용하여 Go 모듈을 생성해야 합니다.

  1. go mod init greeter

이렇게 하면 go.mod 파일이 생성되며 여기에는 모듈 이름과 빌드에 사용된 Go 버전이 포함됩니다.

Output
go: creating new go.mod: module greeter go: to add module requirements and sums: go mod tidy

Go는 향후 변경될 경우 이 모듈의 요구 사항을 업데이트하기 위해 go mod tidy를 실행하라는 메시지를 표시합니다. 지금 실행하면 추가 효과가 없습니다.

3단계 — go build로 Go 바이너리 만들기

go 빌드를 사용하면 샘플 Go 애플리케이션에 대한 실행 가능한 바이너리를 생성하여 원하는 곳에 프로그램을 배포하고 배포할 수 있습니다.

main.go로 시도해 보세요. greeter 디렉터리에서 다음 명령을 실행합니다.

  1. go build

이 명령에 대한 인수를 제공하지 않으면 go build가 현재 디렉토리에서 main.go 프로그램을 자동으로 컴파일합니다. 이 명령은 디렉터리에 있는 모든 *.go 파일을 포함합니다. 또한 시스템에 .go 소스 파일이 있는지 또는 Go 설치 여부에 관계없이 동일한 시스템 아키텍처를 가진 모든 컴퓨터에서 바이너리를 실행하는 데 필요한 모든 지원 코드를 빌드합니다. .

이 경우 현재 디렉터리에 추가된 실행 파일에 greeter 애플리케이션을 빌드했습니다. ls 명령을 실행하여 이를 확인하십시오.

  1. ls

macOS 또는 Linux를 실행 중인 경우 프로그램을 빌드한 디렉토리의 이름을 딴 새 실행 파일을 찾을 수 있습니다.

Output
greeter main.go go.mod

참고: Windows에서 실행 파일은 greeter.exe입니다.

기본적으로 go build는 현재 다른 운영 체제 및 아키텍처용 Go 애플리케이션 빌드 문서에 대한 실행 파일을 생성합니다.

이제 실행 파일을 만들었으므로 실행하여 바이너리가 올바르게 빌드되었는지 확인하십시오. macOS 또는 Linux에서 다음 명령을 실행합니다.

  1. ./greeter

Windows에서 다음을 실행합니다.

  1. greeter.exe

바이너리의 출력은 go run으로 프로그램을 실행할 때의 출력과 일치합니다.

Output
Hello, World!

이제 프로그램뿐만 아니라 해당 바이너리를 실행하는 데 필요한 모든 시스템 코드를 포함하는 단일 실행 가능 바이너리를 만들었습니다. 이제 이 프로그램을 새 시스템에 배포하거나 파일이 항상 동일한 프로그램을 실행한다는 것을 알고 서버에 배포할 수 있습니다.

다음 섹션에서 이 튜토리얼에서는 프로그램의 빌드 프로세스를 더 잘 제어할 수 있도록 바이너리의 이름이 지정되는 방법과 이름을 변경하는 방법을 설명합니다.

4단계 - 바이너리 이름 변경

이제 실행 파일을 생성하는 방법을 알았으므로 다음 단계는 Go가 바이너리 이름을 선택하는 방법을 식별하고 이 이름을 프로젝트에 맞게 사용자 지정하는 것입니다.

go build를 실행할 때 기본값은 Go가 생성된 실행 파일의 이름을 자동으로 결정하는 것입니다. 이전에 만든 모듈을 사용하여 이 작업을 수행합니다. go mod init Greetinger 명령이 실행되면 'greeter'라는 이름의 모듈이 생성되며, 이것이 생성된 바이너리의 이름이 greeter인 이유입니다.

모듈 방식을 자세히 살펴보겠습니다. 프로젝트에 다음과 같은 module 선언이 있는 go.mod 파일이 있는 경우:

module github.com/sammy/shark

그런 다음 생성된 실행 파일의 기본 이름은 shark입니다.

특정 이름 지정 규칙이 필요한 보다 복잡한 프로그램에서는 이러한 기본값이 바이너리 이름을 지정하는 데 항상 최선의 선택은 아닙니다. 이러한 경우 -o 플래그를 사용하여 출력을 사용자 지정하는 것이 가장 좋습니다.

이를 테스트하려면 마지막 섹션에서 만든 실행 파일의 이름을 hello로 변경하고 bin이라는 하위 폴더에 넣습니다. 이 폴더를 만들 필요는 없습니다. Go는 빌드 프로세스 중에 자체적으로 이를 수행합니다.

-o 플래그와 함께 다음 go build 명령을 실행합니다.

  1. go build -o bin/hello

-o 플래그는 Go가 선택한 인수에 대한 명령 출력과 일치하도록 합니다. 이 경우 결과는 bin이라는 하위 폴더에 있는 hello라는 새 실행 파일입니다.

새 실행 파일을 테스트하려면 새 디렉터리로 변경하고 바이너리를 실행합니다.

  1. cd bin
  2. ./hello

다음 출력을 받게 됩니다.

Output
Hello, World!

이제 Go에서 바이너리를 빌드하는 방법에 대한 설문 조사를 완료하여 프로젝트의 요구 사항에 맞게 실행 파일의 이름을 사용자 지정할 수 있습니다. 그러나 go build를 사용하면 여전히 현재 디렉터리에서 바이너리를 실행하는 것으로 제한됩니다. 시스템의 어느 곳에서나 새로 빌드된 실행 파일을 사용하려면 go install을 사용하여 설치할 수 있습니다.

5단계 - go install로 Go 프로그램 설치

지금까지 이 기사에서는 .go 소스 파일에서 실행 가능한 바이너리를 생성하는 방법에 대해 논의했습니다. 이러한 실행 파일은 배포, 배포 및 테스트에 유용하지만 소스 디렉터리 외부에서는 아직 실행할 수 없습니다. 쉘 스크립트나 다른 워크플로에서 프로그램을 적극적으로 사용하려는 경우 문제가 될 수 있습니다. 프로그램을 사용하기 쉽게 만들기 위해 시스템에 프로그램을 설치하고 어디서나 액세스할 수 있습니다.

이것이 의미하는 바를 이해하기 위해 go install 명령을 사용하여 샘플 애플리케이션을 설치합니다.

go install 명령은 go build와 거의 동일하게 작동하지만 실행 파일을 현재 디렉터리 또는 -o 로 지정된 디렉터리에 두지 않습니다. 플래그를 지정하면 실행 파일을 $GOPATH/bin 디렉토리에 배치합니다.

$GOPATH 디렉토리가 있는 위치를 찾으려면 다음 명령을 실행하십시오.

  1. go env GOPATH

수신되는 출력은 다양하지만 기본값은 $HOME 디렉토리 내의 go 디렉토리입니다.

Output
$HOME/go

go install은 생성된 실행 파일을 bin이라는 $GOPATH의 하위 디렉토리에 배치하므로 이 디렉토리를 PATH에 추가해야 합니다. 환경 변수. 이에 대해서는 전제 조건 문서 Go를 설치하고 로컬 프로그래밍 환경을 설정하는 방법의 Go 작업 영역 만들기 단계에서 다룹니다.

$GOPATH/bin 디렉토리가 설정되면 greeter 디렉토리로 다시 이동합니다.

  1. cd ..

이제 설치 명령을 실행합니다.

  1. go install

이렇게 하면 바이너리가 빌드되어 $GOPATH/bin에 저장됩니다. 이를 테스트하려면 다음을 실행하십시오.

  1. ls $GOPATH/bin

그러면 $GOPATH/bin의 내용이 나열됩니다.

Output
greeter

참고: go install 명령은 -o 플래그를 지원하지 않으므로 앞에서 설명한 기본 이름을 사용하여 실행 파일의 이름을 지정합니다.

바이너리가 설치된 상태에서 프로그램이 소스 디렉토리 외부에서 실행되는지 테스트합니다. 홈 디렉터리로 다시 이동합니다.

  1. cd $HOME

다음을 사용하여 프로그램을 실행하십시오.

  1. greeter

그러면 다음이 생성됩니다.

Output
Hello, World!

이제 작성한 프로그램을 시스템에 설치하여 언제 어디서나 필요할 때 사용할 수 있습니다.

결론

이 자습서에서는 Go 도구 체인을 사용하여 소스 코드에서 실행 가능한 바이너리를 쉽게 빌드하는 방법을 보여주었습니다. 이러한 바이너리는 Go 도구 및 환경이 없는 시스템을 포함하여 다른 시스템에서 실행되도록 배포할 수 있습니다. 또한 go install을 사용하여 프로그램을 시스템의 PATH에 실행 파일로 자동 빌드하고 설치했습니다. go buildgo install을 사용하면 이제 원하는 대로 응용 프로그램을 공유하고 사용할 수 있습니다.

이제 go build의 기본 사항을 알았으므로 How To Code in Go 시리즈로 모듈식 소스 코드를 만드는 방법을 탐색할 수 있습니다.