용량 문제를 조사할 때 가장 먼저 여는 파일이다.
arm-none-eabi-gcc ... -Wl,-Map=firmware.map
무엇을 볼 수 있나
섹션별 크기와 주소 .text 얼마, .data 얼마, .bss 얼마
심볼별 크기 어떤 함수·배열이 큰가
어느 오브젝트에서 왔는가 내 코드인가 라이브러리인가
자주 발견하는 것
printf 계열 하나가 수 KB 를 끌고 들어온다 nano 라이브러리나 경량 포맷터로 대체
부동소수점 지원 코드가 통째로 들어와 있다 %f 를 안 쓰면 뺄 수 있다
안 쓰는 함수가 남아 있다 -ffunction-sections 와 --gc-sections
더 빠른 방법
arm-none-eabi-nm --size-sort -S firmware.elf | tail -20
arm-none-eabi-size firmware.elf
크기 순으로 심볼을 보는 것이 맵 파일을 읽는 것보다 빠르다. 빌드마다 size 결과를 CI 로그에 남기면 용량이 언제 튀었는지 추적할 수 있다.