티스토리 뷰
Go에서 go build 명령어는 소스 코드를 컴파일하여 실행 파일을 생성하는 명령어입니다.
go build는 프로젝트의 메인 패키지를 포함한 모든 패키지를 컴파일하고, 컴파일된 파일을 실행 가능한 바이너리로 만듭니다.
go build
명령어 사용하기
1. 프로젝트 구조
Go 프로젝트는 일반적으로 다음과 같은 디렉토리 구조를 가집니다.
myproject/
│
├── main.go
├── utils.go
└── go.mod // (필요시 존재)
main.go
파일에는 프로그램의 진입점인main
함수가 포함됩니다.go.mod
파일은 모듈 관리에 사용되며, 모듈을 사용하지 않을 경우 없어도 됩니다.
2. 기본적인 go build
사용
프로젝트 루트 디렉토리에서 go build
명령어를 실행하면, 해당 디렉토리에 있는 Go 소스 파일을 컴파일하여 실행 파일을 생성합니다.
go build
이 명령어는 현재 디렉토리의 main
패키지를 찾아 컴파일하고, 디렉토리에 바이너리 파일(실행 파일)을 생성합니다.
예시:
- 만약
main.go
파일이package main
을 포함하고 있다면,go build
는 프로젝트 루트 디렉토리에 실행 파일을 생성합니다.- Linux/macOS:
myproject
라는 실행 파일이 생성됩니다. - Windows:
myproject.exe
라는 실행 파일이 생성됩니다.
- Linux/macOS:
3. 특정 파일 컴파일하기
go build
뒤에 특정 Go 파일을 지정하여 해당 파일만 컴파일할 수 있습니다.
go build main.go
이 명령어는 main.go
파일을 컴파일하여 실행 파일을 생성합니다.
4. 실행 파일 이름 지정
-o
플래그를 사용하면 생성할 실행 파일의 이름을 지정할 수 있습니다.
go build -o myapp
위 명령은 컴파일된 실행 파일을 myapp
이라는 이름으로 생성합니다.
5. 외부 모듈 포함 프로젝트 빌드
모듈을 사용하는 프로젝트라면, Go 프로젝트 루트에 go.mod
파일이 존재할 것입니다. 이 경우, go build
명령어를 사용하면 자동으로 go.mod
에서 필요한 의존성을 확인하고 해당 모듈들을 포함한 상태로 빌드를 수행합니다.
go build
필요한 모듈들이 다운로드되지 않았을 경우 자동으로 다운로드한 후 빌드가 진행됩니다.
6. 크로스 컴파일 (다른 운영 체제/아키텍처용으로 빌드)
Go는 크로스 컴파일을 매우 쉽게 지원합니다. 환경 변수 GOOS
와 GOARCH
를 설정하여 다른 운영 체제나 아키텍처용으로 빌드할 수 있습니다.
예시: Windows용 바이너리 빌드
GOOS=windows GOARCH=amd64 go build -o myapp.exe
예시: Linux용 바이너리 빌드
GOOS=linux GOARCH=amd64 go build -o myapp
7. 디버그 정보 포함된 빌드
디버그 정보를 포함한 빌드를 하려면 -gcflags
옵션을 사용할 수 있습니다.
go build -gcflags "-N -l"
이 명령어는 최적화를 비활성화하고 디버깅을 위한 추가 정보를 포함한 바이너리를 생성합니다.
8. 빌드 결과 확인
빌드가 완료되면, 생성된 실행 파일을 확인할 수 있습니다. 터미널에서 ls
명령어를 사용하여 파일을 확인하거나, 해당 디렉토리에서 실행 파일을 실행할 수 있습니다.
예시:
./myapp
이 명령어는 myapp
파일을 실행하여 프로그램을 실행합니다.
요약
go build
는 Go 프로그램을 컴파일하여 실행 파일을 생성하는 기본 명령어입니다.- 특정 파일을 지정하거나, 실행 파일 이름을 지정할 수 있으며, 크로스 컴파일도 지원합니다.
go build
는 의존성을 자동으로 관리하여 빌드할 수 있습니다.
'프로그래밍 > golang' 카테고리의 다른 글
go에서 mod파일 사용하는 방법 (0) | 2024.09.14 |
---|---|
go언어에서 패키지, 다른 패키지의 함수 호출하기 (0) | 2024.09.13 |
go에서 구조체 초기화 하는 법 (0) | 2024.09.13 |
go언어에서 const 상수에 대해 알아보자. (0) | 2024.09.13 |
go에서 배열 초기화 방법에 대해 알아보자 (0) | 2024.09.13 |
- Total
- Today
- Yesterday
- 투자
- Frontend
- Spring
- Windows
- 파이썬
- 커널드라이버
- Linux
- go
- JSX
- ios
- SWiFT
- Python
- 예제
- CSS
- JavaScript
- golang
- 부동산
- 트렌드
- 스핀락
- 유튜브
- Java
- WinAPI
- ChatGPT
- react
- HTML
- Backend
- 주식
- reactjs
- 생각
- frida
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |