C 언어 환경 설정

C 언어 환경 설정

1. C 언어 개발에 필요한 것

구성 요소 설명
컴파일러 C 코드를 실행 파일로 변환 (GCC, Clang)
텍스트 에디터/IDE 코드 작성 (VS Code, Vim 등)
터미널 컴파일 및 실행

2. 컴파일러 설치

macOS

Xcode Command Line Tools에 Clang이 포함되어 있습니다.

# Xcode Command Line Tools 설치
xcode-select --install

# 설치 확인
clang --version
gcc --version  # macOS에서 gcc는 clang의 별칭

Windows

방법 1: MinGW-w64 (권장)

  1. MSYS2 다운로드 및 설치
  2. MSYS2 터미널에서:
pacman -S mingw-w64-ucrt-x86_64-gcc
  1. 환경 변수 PATH에 추가: C:\msys64\ucrt64\bin

방법 2: WSL (Windows Subsystem for Linux)

# WSL 설치 후 Ubuntu에서
sudo apt update
sudo apt install build-essential

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install build-essential

# 설치 확인
gcc --version

3. VS Code 설정

확장 프로그램 설치

  1. C/C++ (Microsoft) - 필수
  2. 문법 강조, IntelliSense, 디버깅

  3. Code Runner (선택)

  4. 단축키로 빠른 실행

설정 (settings.json)

{
    "C_Cpp.default.compilerPath": "/usr/bin/gcc",
    "code-runner.executorMap": {
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    },
    "code-runner.runInTerminal": true
}

tasks.json (빌드 태스크)

.vscode/tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build C",
            "type": "shell",
            "command": "gcc",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

Cmd+Shift+B (macOS) 또는 Ctrl+Shift+B (Windows)로 빌드


4. Hello World

코드 작성

hello.c:

#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}

컴파일 및 실행

# 컴파일
gcc hello.c -o hello

# 실행
./hello          # macOS/Linux
hello.exe        # Windows

# 출력: Hello, World!

컴파일 옵션 설명

gcc hello.c -o hello
#   ↑        ↑   ↑
#   소스파일   출력  출력파일명

# 유용한 옵션
gcc -Wall hello.c -o hello      # 모든 경고 표시
gcc -g hello.c -o hello         # 디버그 정보 포함
gcc -O2 hello.c -o hello        # 최적화 레벨 2
gcc -std=c11 hello.c -o hello   # C11 표준 사용

권장 컴파일 명령

gcc -Wall -Wextra -std=c11 -g hello.c -o hello

5. Makefile 기초

프로젝트가 커지면 Makefile로 빌드를 자동화합니다.

기본 Makefile

# Makefile

CC = gcc
CFLAGS = -Wall -Wextra -std=c11 -g

# 기본 타겟
all: hello

# hello 실행 파일 생성
hello: hello.c
    $(CC) $(CFLAGS) hello.c -o hello

# 정리
clean:
    rm -f hello

# .PHONY: 파일이 아닌 타겟 명시
.PHONY: all clean

사용법

make          # 빌드
make clean    # 정리

여러 파일 프로젝트

project/
├── Makefile
├── main.c
├── utils.c
└── utils.h
CC = gcc
CFLAGS = -Wall -Wextra -std=c11 -g

SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)
TARGET = myprogram

all: $(TARGET)

$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) -o $(TARGET)

%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@

clean:
    rm -f $(OBJS) $(TARGET)

.PHONY: all clean

6. 디버깅 기초

printf 디버깅

#include <stdio.h>

int main(void) {
    int x = 10;
    printf("DEBUG: x = %d\n", x);  // 값 확인

    x = x * 2;
    printf("DEBUG: x after *2 = %d\n", x);

    return 0;
}

GDB (GNU Debugger)

# 디버그 정보 포함 컴파일
gcc -g hello.c -o hello

# GDB 시작
gdb ./hello

# GDB 명령어
(gdb) break main      # main 함수에 브레이크포인트
(gdb) run             # 실행
(gdb) next            # 다음 줄 (n)
(gdb) step            # 함수 내부로 (s)
(gdb) print x         # 변수 x 출력
(gdb) continue        # 계속 실행 (c)
(gdb) quit            # 종료 (q)

VS Code 디버깅

.vscode/launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug C",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "Build C",
            "MIMode": "lldb"
        }
    ]
}

7. 프로젝트 구조 예시

my_c_project/
├── Makefile
├── src/
│   ├── main.c
│   └── utils.c
├── include/
│   └── utils.h
├── build/           # 컴파일 결과물
└── tests/
    └── test_utils.c

환경 확인 체크리스트

# 1. 컴파일러 확인
gcc --version

# 2. 테스트 파일 생성
echo '#include <stdio.h>
int main(void) { printf("OK\\n"); return 0; }' > test.c

# 3. 컴파일
gcc test.c -o test

# 4. 실행
./test

# 5. 정리
rm test test.c

모든 단계가 성공하면 환경 설정 완료입니다!


다음 단계

01_C_기초_빠른복습.md에서 C 언어 핵심 문법을 빠르게 복습합시다!

to navigate between lessons