save-temp옵션은 빌드 중 생성된 파일을 삭제하지 않고 모두 보여준다.
중간에 생성되는 파일이 상당히 많아 깜짝 놀랄수도 있는데, 어떤 파일인지 한번 구경하고 넘어가자.
GNU 도구를 사용하여 STM32-Discovery 프로그래밍. 링커 스크립트
https://embedds.com/programming-stm32-discovery-using-gnu-tools-linker-script/
OS에서 최종 실행파일은 .exe나 .elf가 있는 것처럼 MCU에서도 최종적인 실행파일은 .hex나 .rom등이 있다. gcc나 VS2019처럼 MCU도 컴파일러, 링커, 어셈블러, 바이너리 생성기 등이 필요하다. VS2019에서 빌드 버튼을 클릭만 하면 실행 파일이 생성되는 것처럼 MCU도 Build 버튼을 클릭하면 hex나 rom 파일까지 만들어 준다. 하지만, 실제 과정은 아래와 같이 간단치 않다.
사실 프로젝트 진행할 때 매번 이러한 과정을 염두에 두고 개발하지는 않지만, 빌드 과정이 어떻게 진행되는지 알아둘 필요는 있다. 왜냐하면, 프로젝트 진행시 간혹 아래와 같은 문제가 발생하기 때문이다. 빌드시에 링킹 과정에서 에러가 나는지, 링커에 어떻게 o 파일을 연결시키는지, 메모리에 어떻게 배치하는지 (외부 램을 연결할 경우 링커 스크립트를 통해서 스택이나 힙 영역등을 변경해 주어야 함) 이는 소스 레벨에서 해결할수 없으며 부득이 하게 빌드 과정을 살펴보아야 하기 때문이다.