임베디드 용어 사전
최적화·저전력

LTO

링크 시점에 전체 프로그램을 보고 최적화하는 기능. 크기와 속도를 함께 줄이지만 디버깅이 어려워진다.

Link Time Optimization. 파일 경계를 넘어서 최적화한다.

일반 컴파일   파일 하나씩 최적화 → 다른 파일의 함수는 블랙박스
LTO          링크 때 전체를 보고 인라인·제거·상수 전파

얻는 것

  • 안 쓰는 함수·데이터가 실제로 제거된다(-ffunction-sections -fdata-sections -Wl,--gc-sections 와 함께)
  • 작은 함수가 호출 없이 인라인된다
  • 상수가 전파돼 분기가 통째로 사라진다

크기가 10~30% 줄어드는 경우가 흔하다.

대가

빌드가 느려진다
디버깅이 어려워진다        인라인돼 사라진 함수는 브레이크포인트를 못 건다
숨어 있던 미정의 동작이 드러난다   최적화가 세지면서 동작이 바뀐다

마지막 항목이 중요하다. LTO 를 켰더니 깨졌다면 대개 코드에 원래 문제가 있다volatile 누락, 엄격한 앨리어싱 위반, 초기화 안 된 변수 같은 것들이다.

그래서 켤 때는 켜고 끈 상태를 모두 시험하고, 릴리스 구성으로 고정한 뒤 그것으로 검증한다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 최적화 — 크기와 속도를 재고 줄인다