개요
Go 언어로 작성된 프로그램을 다양한 운영체제와 아키텍처에서 실행 가능한 바이너리 파일로 컴파일하기 위해서
간단한 셸 스크립트를 작성해볼 것이다.
아주 간단하게 환경 변수만 설정해주면 된다.
스크립트
#!/usr/bin/bash
# 모듈 생성
moduleName='goProjects/hello'
go mod init "$moduleName" 2>/dev/null
# 프로그램 이름
APP_NAME="myapp"
# 운영체제 및 아키텍처 조합
PLATFORMS=("linux/amd64" "windows/amd64")
# 빌드
function build() {
OS=$1
ARCH=$2
OUTPUT_DIR="bin/$OS-$ARCH"
OUTPUT_NAME="$APP_NAME"
# windows의 경우 .exe 확장자 추가
if [[ "$OS" == "windows" ]]; then
OUTPUT_NAME="$OUTPUT_NAME.exe"
fi
# 출력 디렉토리 생성
mkdir -p "$OUTPUT_DIR"
# 환경변수 설정 및 빌드
GOOS=$OS GOARCH=$ARCH go build -o "$OUTPUT_DIR/$OUTPUT_NAME"
if [[ "$?" -ne 0 ]]; then
echo "Failed to build for $OS/$ARCH"
else
echo "Successfully built for $OS/$ARCH"
fi
}
# 모든 플랫폼에 대한 빌드 실행
for OS in "${PLATFORMS[@]}"; do
OS=$(echo $PLATFORM | cut -d '/' -f 1)
ARCH=$(echo $PLATFORM | cut -d '/' -f 2)
build $OS $ARCH
done
스크립트 설명
APP_NAME
: 컴파일할 Go 프로그램의 이름PLATFORMS
: 타겟으로 하는 운영체제와 아키텍처 조합.- 이 예시에서는
linux/amd64
,windows/amd64
가 포함되어 있음.
- 이 예시에서는
build
함수: 주어진 운영체제 조합으로 Go 프로그램을 컴파일.- Windows의 경우 실행 파일에
.exe
확장자를 추가.
- Windows의 경우 실행 파일에
- 스크립트 실행: PLATFORMS 목록에 있는 모든 조합에 대해
build
함수를 호출하여 바이너리 파일을 생성.
실행
위 스크립트를 build.sh
파일로 저장하고
실행 권한 부여 후 실행
chmod u+x build.sh
bash build.sh
linux
Successfully built for linux/amd64
...