Go 빌드 빌드는 무엇입니까?
새로운 Go 프로그래머는 기본 go build 명령이 수행하는 작업을 알지 못하거나 혼동하는 경우가 많습니다.
go build
및 go install
명령 은 정확히 무엇을 빌드하고 결과 / 출력을 어디에 배치합니까?
어떤 go
명령을 수행하는 것은 우리가 "정상"패키지 실행 여부에 특수에 대한 의존 "main"
패키지로 제공된다.
패키지 용
go build
패키지를 빌드 한 다음 결과 를 버립니다 .go install
그런 다음 builds 는$GOPATH/pkg
디렉토리에 패키지 를 설치 합니다 .
명령 (패키지 main
)
go build
명령을 빌드하고 결과를 현재 작업 디렉토리 에 둡니다 .go install
임시 디렉토리에 명령을 빌드 한 다음$GOPATH/bin
.
기본적으로 go build
패키지가 (종속성과 함께) 빌드 될 수 있는지 확인하는 동시에 .NET go install
의 적절한 폴더에 결과를 (영구적으로) 설치할 수 있습니다 $GOPATH
.
go build
모든 것이 정상이면 자동으로 종료되고 패키지를 빌드 / 컴파일 할 수없는 경우 오류 메시지가 표시됩니다.
이 go
도구는 패키지 나 바이너리를 설치할 때마다 어떤 종속성도 설치하므로 실행 go install
하면 프로그램이 의존하는 패키지 (공개적으로 사용 가능한 "go gettable"패키지)도 자동으로 설치됩니다.
먼저 공식 Go 코드 작성 방법 페이지를 읽어보세요.
go
도구 에 대한 추가 정보 : Command go
다음 명령을 실행하여 추가 도움말을 얻을 수도 있습니다.
go help build
Go 1.5로 시작 go install
하면 go build
( source )에서 만든 실행 파일도 제거 된다는 점도 주목할 가치가 있습니다 .
'go install'(인수없이 현재 디렉토리를 의미 함)이 성공하면 'go build'로 작성된 실행 파일이 있으면 제거합니다. 이것은 오래된 바이너리를 남겨 두는 것을 방지합니다 ...
목록을 완성하려면 go run
응용 프로그램을 임시 폴더로 컴파일하고 실행 가능한 바이너리를 시작합니다. 앱이 종료되면 임시 파일을 올바르게 정리합니다.
Dave Cheney의 What does go build build 에서 영감을 얻은 질문
패키지 :
go build
: 패키지를 빌드 한 다음 결과 를 버립니다 .
Go 1.10 (2018 년 1 분기) 이후에는 그렇지 않습니다 . CL 68116 및 CL 75473 덕분 입니다. 여기에서 참조하는 이 스레드를 참조하십시오.
go build
및go install
명령 이 정확히 무엇을 빌드 합니까?go 도구가 패키지 또는 바이너리를 설치할 때마다 종속 항목도 설치하므로 go install을 실행하면 프로그램이 의존하는 패키지 (공개적으로 사용 가능한 "go gettable"패키지)도 자동으로 설치됩니다.
실제로 ... go install
Go 1.10에서도 새 캐시 에 추가 됩니다.
"
go install
"명령은 더 이상 명명 된 패키지의 종속성을 설치하지 않습니다 ( CL 75850 )."
go install foo
" 을 실행하면 설치되는 유일한 항목은foo
.이전에는 다양했습니다. 종속성이 오래된 경우 "
go install
"도 모든 종속성을 설치했습니다.
"go install
" 동안 종속성을 암시 적으로 설치하면 사용자에게 많은 혼란과 골칫거리가 발생했지만 이전에는 증분 빌드를 활성화해야했습니다.
더 이상은 아닙니다.
우리는 새로운 "install what I said
"의미론이 훨씬 더 이해하기 쉬울 것이라고 생각합니다. 특히 많은 사용자가 이미 예상했던 버그 보고서에서 분명하기 때문입니다.
"go install
" 동안 종속성을 강제로 설치하려면go install -i
"go build -i
"및 "go test -i
" 과 유사하게 새 " "를 사용하십시오 ."
go install
"이 (가) 다시 빌드 된 종속성을 설치하는 데 사용 되었다는 사실은 " "을-a
(를) 의미 하는와 함께 가장 자주 혼동을 일으켰습니다force rebuild of all dependencies
.
이제 "go install -a myprog
"는 자신myprog
뿐만 아니라 의 모든 종속성을 완전히 다시 빌드myprog
하지만myprog
설치 만 수행 합니다. (물론 다시 빌드 된 모든 종속성은 여전히 빌드 캐시에 저장됩니다.)
이전보다 종속성을 더 자주 다시 빌드해야하는 좋은 이유를 확인하기 때문에이 사례를 더 이해하기 쉽게 만드는 것은 새로운 콘텐츠 기반 부실 성 분석과 함께 특히 중요합니다. , "내 종속성이 설치되는 이유"혼동이 증가했을 것입니다.
예를 들어 "go install -gcflags=-N myprog
" 를 실행 하면myprog
컴파일러 최적화없이 빌드되었지만 더 이상myprog
컴파일러 최적화없이 표준 라이브러리에서 패키지 사용을 다시 설치하지 않습니다 .
참고 URL : https://stackoverflow.com/questions/30612611/what-does-go-build-build
'developer tip' 카테고리의 다른 글
NUnit 테스트를 병렬로 실행하려면 어떻게해야합니까? (0) | 2020.10.17 |
---|---|
AngularJS 테스트에서 _servicename_의 밑줄은 무엇을 의미합니까? (0) | 2020.10.17 |
WPF 바인딩에서 "{Binding Path =.}"는 무엇을 의미합니까? (0) | 2020.10.17 |
jQuery 플러그인을 확장하는 가장 좋은 방법 (0) | 2020.10.17 |
Android 데이터베이스 암호화 (0) | 2020.10.17 |