그라운드 임베디드 EN 유튜브 구독

노트 / C 언어

빌드 과정: 소스가 펌웨어가 되기까지

전처리, 컴파일, 어셈블, 링크를 거쳐 실행 파일이 되는 흐름과 링크 오류를 읽는 방법.

GROUND EMBEDDED · 정리 노트C 언어 12빌드 과정단계입력 → 출력하는 일전처리.c → .iinclude, defi…컴파일.i → .sC를 어셈블리로

빌드 버튼 한 번 뒤에는 네 단계가 있습니다.

단계 입력 → 출력 하는 일
전처리 .c → .i include, define 펼치기
컴파일 .i → .s C를 어셈블리로
어셈블 .s → .o 어셈블리를 기계어 목적 파일로
링크 .o 여러 개 → .elf 함수와 변수 주소 확정, 하나로 합치기

.elf에서 필요한 부분만 뽑으면 MCU에 굽는 .bin이나 .hex가 됩니다.

.c소스전처리.i컴파일.s어셈블.o링크.elf → .bin
빌드 버튼 뒤의 네 단계. 오류 메시지를 보면 어느 단계에서 났는지 알 수 있습니다.

오류가 어느 단계에서 났는지 보기

  • undeclared identifier: 컴파일 단계. 헤더를 안 넣었거나 오타
  • undefined reference to 'foo': 링크 단계. 선언은 있는데 정의가 담긴 .c 파일이 빌드에 빠짐
  • multiple definition of 'x': 링크 단계. 헤더에 변수를 정의해서 여러 파일에 들어감
  • region FLASH overflowed: 링크 단계. 코드가 Flash 크기를 넘음

맵 파일

링커가 남기는 .map 파일에는 함수와 변수가 어느 주소에 몇 바이트로 놓였는지 나옵니다. Flash나 RAM이 부족할 때 가장 먼저 여는 파일입니다.

영상으로 이어 보기공부법과 진로 시리즈 15편2025 임베디드 프로그래밍 공부 순서 | 공부 방법 | 로드맵PROJECT COURSEC 문법을 실제 펌웨어 코드로 써 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →