Go 1.1 교차 컴 파일

3479 단어 Go교차 컴 파일
이것 은 내 가 작년 8 월 에 쓴 글 에 대한 고 1.1 버 전의 업데이트 에 대한 보충 소개 이다.작년 이후 goxc 같은 셸 패 키 징 도구 가 탄생 하여 Go 교차 컴 파일 과 배치 에 완전한 해결 방안 을 제공 합 니 다.
소개 하 다.
Go 는 외부 기기 에 바 이 너 리 파일 을 배치 하고 환경 을 설치 하지 않 아 도 된다 는 지원 이 좋 습 니 다.이것 은 테스트 에 구축 명령 을 사용 해 야 하 는 가방 이나 목표 플랫폼 이 개발 환경 을 배치 하 는 데 적합 하지 않 을 때 매우 편리 하 다.
Go 버 전과 일치 하 는 교차 컴 파일 기능 을 구축 하 는 것 은 Go 의 구축 스 크 립 트 에 내장 되 어 있 습 니 다.GOOS, GOARCH 를 보면 가능 하 다 면 GOARM 을 보면 모두./make. bash 에서 호출 되 었 음 을 알 수 있 습 니 다.따라서 다음 실현 방안 은 당신 의 일 을 간소화 하 는 데 쓰 일 뿐이다.
입문 하 다
1. 원본 코드 로 Go 를 설치 합 니 다.구체 적 인 조작 절 차 는 golang.org/doc/install/source 찾 아.설치 과정 에 익숙 하 다 면 간단 한 설치 지시 입 니 다.
% hg clone https://code.google.com/p/go
% cd go/src
% ./all.bash
2. Github 에서 교차 컴 파일 을 지원 하 는 스 크 립 트 가 검출 되 었 습 니 다: github. com/davecheney/golang - crosscopile.
% git clone git://github.com/davecheney/golang-crosscompile.git
% source golang-crosscompile/crosscompile.bash

3. Go 가 지원 하 는 모든 플랫폼 을 컴 파일 합 니 다.
% go-crosscompile-build-all
go-crosscompile-build darwin/386
go-crosscompile-build darwin/amd64
go-crosscompile-build freebsd/386
go-crosscompile-build freebsd/amd64
go-crosscompile-build linux/386
go-crosscompile-build linux/amd64
go-crosscompile-build linux/arm
go-crosscompile-build windows/386
go-crosscompile-build windows/amd64
각 플랫폼 의 Go runtime 과 표준 라 이브 러 리 를 컴 파일 합 니 다. go/pkg 디 렉 터 리 에서 다음 가방 을 볼 수 있 습 니 다.
% ls -1 go/pkg 
darwin_386
darwin_amd64
freebsd_386
freebsd_amd64
linux_386
linux_amd64
linux_arm
obj
tool
windows_386
windows_amd64

교차 컴 파일 환경 사용
원본 파일 croscompile. bash 에서 각 플랫폼 에 대한 go - $GOOS - $GOARC 함수, 표준 Go tool 로 사용 할 수 있 습 니 다.예 를 들 어 linux/arm 에서 실행 되 는 프로그램 을 컴 파일 합 니 다.
% cd $GOPATH/github.com/davecheney/gmx/gmxc
% go-linux-arm build 
% file ./gmxc 
./gmxc: ELF 32-bit LSB executable, ARM, version 1 (SYSV), 
statically linked, not stripped

이 파일 은 홈 시스템 (예 를 들 어 darwin/amd 64) 에서 실행 할 수 없 지만 linux/arm 에서 사용 할 수 있 습 니 다.
약간의 경고
Go 개발 환경 이 아 닌 교차 컴 파일 바 이 너 리
이 글 은 목표 환경 에서 고 (Go) 의 개발 환경 을 구축 하 는 것 이 아니 라 목표 환경 에서 고 (Go) 의 개발 환경 을 구축 하 는 방법 을 다 뤘 다.Go 개발 환경 을 구축 하려 면 해당 환경 에서 직접 설치 해 야 합 니 다.대부분의 플랫폼 에서 원본 코드 에서 설치 하거나 Go 공식 에서 제공 하 는 설치 패 키 지 를 사용 해 야 합 니 다. 기꺼이 사용 하 시 겠 다 면.
cgo 의 교차 컴 파일 은 지원 되 지 않 습 니 다.
현재 cgo 컴 파일 모드 를 열 었 을 때 교차 컴 파일 을 할 수 없습니다. 이것 은 cgo 와 관련 된 함수 가 프로그램 이 있 는 운영 체제 에 직접 의존 하기 때 문 입 니 다.또한 각 플랫폼 의 기본 C 컴 파일 러 가 다 르 기 때문에 컴 파일 된 프로그램 이 호 환 되 지 않 을 수 있 습 니 다.
Go 1.1 에서 교차 컴 파일 을 사용 할 때 CGOENBALED 는 기본 값 0 (닫 기) 으로 설 정 됩 니 다.
대상 플랫폼 이 linux/arm 일 때 GOARM 을 설정 해 야 합 니 다.
일부 arm 플랫폼 의 하드웨어 가 부동 소수점 단위 가 부족 하기 때문에 GOARM 의 값 은 링크 기 가 하드웨어 를 사용 하 는 지 소프트웨어 부동 소수점 코드 를 사용 하 는 지 알려 주 는 데 사 용 됩 니 다.서로 다른 플랫폼 의 수요 에 따라 프로그램 을 구축 할 때 다음 환경 변 수 를 수정 할 수 있 습 니 다.
% GOARM=5 go-linux-arm build

판본 e4b20018f797 GOARM 을 왜 값 으로 설정 해 야 하 는 지 알려 주 는 아주 우호 적 인 오류 알림 이 있 을 수 있 습 니 다.
$ ./gmxc 
runtime: this CPU has no floating point hardware, so it cannot 
run this GOARM=7 binary. Recompile using GOARM=5.

GOARM 을 설정 하지 않 으 면 기본적으로 하드웨어 부동 소수점 단 위 를 사용 합 니 다.Go 가 linux/arm 에 있 는 글: Go Language Community Wiki 를 더 읽 을 수 있 습 니 다.
원본 주소:http://dave.cheney.net/2013/07/09/an-introduction-to-cross-compilation-with-go-1-1

좋은 웹페이지 즐겨찾기