빌드 과정: 소스가 펌웨어가 되기까지
전처리, 컴파일, 어셈블, 링크를 거쳐 실행 파일이 되는 흐름과 링크 오류를 읽는 방법.
빌드 버튼 한 번 뒤에는 네 단계가 있습니다.
| 단계 | 입력 → 출력 | 하는 일 |
|---|---|---|
| 전처리 | .c → .i | include, define 펼치기 |
| 컴파일 | .i → .s | C를 어셈블리로 |
| 어셈블 | .s → .o | 어셈블리를 기계어 목적 파일로 |
| 링크 | .o 여러 개 → .elf | 함수와 변수 주소 확정, 하나로 합치기 |
.elf에서 필요한 부분만 뽑으면 MCU에 굽는 .bin이나 .hex가 됩니다.
오류가 어느 단계에서 났는지 보기
undeclared identifier: 컴파일 단계. 헤더를 안 넣었거나 오타undefined reference to 'foo': 링크 단계. 선언은 있는데 정의가 담긴 .c 파일이 빌드에 빠짐multiple definition of 'x': 링크 단계. 헤더에 변수를 정의해서 여러 파일에 들어감region FLASH overflowed: 링크 단계. 코드가 Flash 크기를 넘음
맵 파일
링커가 남기는 .map 파일에는 함수와 변수가 어느 주소에 몇 바이트로 놓였는지 나옵니다. Flash나 RAM이 부족할 때 가장 먼저 여는 파일입니다.