Zig 언어 공부를 시작합니다. 설치부터 문법 및 간단한 응용까지 다룹니다.
0. 설치
2025년 1월 현재 최신 버전은 0.13.0
입니다.
MacOS 에 Zig 설치
1
2
3
4
brew install zig
# zig version
# 0.13.0
VSCode 의 Zig 확장 모듈 설치
Zig Language
를 검색하여 선택한다.
Zig 언어 특징
- 강력하게 타입이 지정된 컴파일 언어
- 제네릭을 지원하고, 강력한 컴파일 타임 메타 프로그래밍 기능이 있고
- 가비지 수집을 포함하지 않습니다.
- 많은 사람들이 Zig 를 C 의 현대적인 대안으로 생각합니다.
- 문법도 C 와 유사 (중괄호 블록을 사용하고 세미콜론으로 문장 구분)
튜토리얼 문서
1. 사용해보기 : Hello World
프로젝트 생성
1
2
3
mkdir hello-world
cd hello-world
zig init
src 와 zig-out 디렉토리와 기본 파일들이 생성된다.
build.zig
: 빌드를 위한 작업build.zig.zon
: 스펙 데이터src
main.zig
: 실행되는 코드root.zig
: 정적 라이브러리 코드 (일종의 컨벤션이다)
zig-out
: 실행파일 빌드시 생성된다
빌드 및 실행
1
2
3
4
5
6
7
8
9
10
11
# 사용법 보기
zig build -h | more
# 빌드 및 실행
zig build run
# All your codebase are belong to us.
# Run `zig build test` to run the tests.
# 실행파일
ls -l zig-out/bin
# hello-world
실행파일 출력
별도의 위치에 생성하고 싶으면 -femit-bin
옵션을 사용한다.
1
2
3
mkdir target
zig build-exe src/main.zig -femit-bin=target/hello
./target/hello
src/main.zig 파일
기존에 작성된 내용은 날려버리자.
1
2
3
4
5
const std = @import("std");
pub fn main() !void {
std.debug.print("Hello, {s}!\n", .{"World"});
}
실행해 보자.
1
2
3
4
zig build run
# Hello, World!
./zig-out/bin/hello-world
# Hello, World!
src/root.zig 파일
zig init
실행시 생성되고 정적 라이브러리 작성을 위한 별도의 파일이다.
- 이름을 다른 것으로 변경해도 된다. 단,
build.zig
에 명기해야 함- 참고 : What is root.zig?
1
2
3
4
5
6
7
8
9
// build.zig
// root_source_file 에 root.zig 를 명기하고 있다.
const lib = b.addStaticLibrary(.{
.name = "hello-world",
.root_source_file = b.path("src/root.zig"),
.target = target,
.optimize = optimize,
});
9. Review
- 마음을 비웠다. 의미 없이 노는 것도 지겹다.
- 논다고 생각하고 처음부터 공부하기를 시작하자. 부담을 갖지 말자.
끝! 읽어주셔서 감사합니다.