메인 콘텐츠로 건너뛰기

목적 및 범위

이 문서는 소스에서 StableNet을 빌드하는 방법에 대한 상세 지침을 제공합니다. 빌드 시스템 아키텍처, 사용 가능한 빌드 타겟, 크로스 컴파일 옵션을 다룹니다. 빌드된 노드 구성에 대한 정보는 노드 구성을 참조하세요. 제네시스 파일로 새 네트워크를 초기화하는 방법은 제네시스 설정 및 네트워크 초기화를 참조하세요.

사전 요구사항

StableNet은 소스에서 빌드하려면 Go 1.22 이상이 필요합니다. 빌드에 필요한 추가 의존성:
  • C 컴파일러 (gcc 또는 clang) - CGO 활성화 패키지용
  • Git - 버전 메타데이터 임베딩용
  • Make (선택사항, 편의 타겟용)

빌드 시스템 아키텍처

StableNet 빌드 시스템은 노드 실행 바이너리를 생성하기 위한 Go 기반 빌드 스크립트를 중심으로 구성되며, 빌드 환경 감지와 공통 빌드 로직을 담당합니다.

빌드 시스템 컴포넌트

File PathPurpose
build/ci.goMain build orchestrator with subcommands
MakefileConvenience wrapper for common tasks
internal/build/util.goBuild utility functions
internal/build/gotool.goGo toolchain management
internal/build/env.goEnvironment detection (CI/local)
build/checksums.txtDependency checksums for verification

소스에서 빌드

Make 사용

StableNet은 Makefile 타겟을 사용해 쉽게 빌드할 수 있습니다.
git clone https://github.com/stable-net/go-stablenet
cd go-stablenet

# gstable 클라이언트만 빌드
make gstable

# genesis_generator만 빌드
make genesis_generator

# 모든 실행 파일 빌드 (gstable, abigen, bootnode, evm, rlpdump, clef, genesis_generator 등)
make all

# 빌드 확인
./build/bin/gstable version
빌드된 바이너리는 모두 build/bin/ 디렉터리에 생성됩니다.

build/ci.go 직접 사용

더 세밀한 제어가 필요한 경우 빌드 스크립트를 직접 호출할 수 있습니다:
# gstable만 빌드
go run build/ci.go install ./cmd/gstable

# 특정 아키텍처로 빌드 (예: ARM64)
go run build/ci.go install -arch arm64 ./cmd/gstable

# 정적 링크 바이너리 생성 (Linux)
go run build/ci.go install -static ./cmd/gstable

# checksums.txt에 명시된 Go 버전을 자동 다운로드하여 빌드
go run build/ci.go install -dlgo ./cmd/gstable

# 모든 실행 파일 빌드
go run build/ci.go install
install 명령에서 사용할 수 있는 플래그:
FlagDescription
-dlgoDownload and use specific Go version from checksums.txt
-archTarget architecture (amd64, 386, arm, arm64)
-ccC compiler for cross-compilation
-staticCreate statically linked executable (Linux)

사용 가능한 빌드 타겟

모든 실행 파일은 build/bin/에 빌드됩니다:
ExecutablePurposeSource Path
gstableMain StableNet clientcmd/gstable/
genesis_generatorGenesis file generatorcmd/genesis_generator/
abigenSolidity ABI to Go binding generatorcmd/abigen/
bootnodeLightweight bootstrap nodecmd/bootnode/
evmEVM testing toolcmd/evm/
rlpdumpRLP data structure inspectorcmd/rlpdump/
clefExternal account signercmd/clef/
devp2pP2P network utilitiescmd/devp2p/

크로스 컴파일

빌드 시스템은 Go의 내장 크로스 컴파일과 외부 C 툴체인을 사용하여 여러 아키텍처 및 운영 체제에 대한 크로스 컴파일을 지원합니다.

지원 플랫폼

CI 시스템은 다음 플랫폼에 대해 빌드합니다:
PlatformArchitectureNotes
Linuxamd64Default, full support
Linux38632-bit Intel/AMD
LinuxarmARMv5, ARMv6, ARMv7 (GOARM variants)
Linuxarm6464-bit ARM
macOSamd64Intel Macs
macOSarm64Apple Silicon (M1/M2)
Windowsamd6464-bit Windows
Windows38632-bit Windows

빌드 검증

빌드 후 테스트를 실행하여 정상 동작을 확인합니다:
# 빠른 테스트 실행
make test-short

# 전체 테스트 실행
make test

# 린트 검사
make lint
build/ci.go test 명령은 다음 옵션을 지원합니다:
# 커버리지 보고
go run build/ci.go test -coverage ./...

# 레이스 감지
go run build/ci.go test -race ./...

# 상세 출력
go run build/ci.go test -v ./...