런타임 초기화시 C++ 생성자 호출
기술노트 16676
아키텍처:
ARM
컴포넌트:
linker
업데이트:
2021-06-27 오전 7:55
소개
"Automatic runtime library selection" 을 사용하지 않도록 설정하면 응용 프로그램이 임의의 하드웨어 오류를 발생시킵니다. (이 옵션을 활성화 하면 런타임 오류가 없습니까?)
적용
IAR Embedded Workbench for ARM 버전 6.x (혹은 상위 버전)의 C++ 비표준 기능(dialects) 가용 상태로 빌드한 프로젝트.
이유
IAR 라이브러리 자동 선택과 함께 링크된 프로젝트에서 __iar_cstart_call_ctors방식 호출이 링커에 의해 추가됩니다. Project > Options > Linker > Library > "Automatic runtime library selection" 를 참고
만약 프로젝트가 자동 라이브러리 선택 없이 링크되었다면, 링커는 __iar_cstart_call_ctors 방식 호출을 추가하지 않습니다.
IAR Embedded Workbench for ARM 6.10.2 (및 상위 버전)에서 해결 방법
Project > Options > Linker > Extra Options에 커맨드 라인 옵션을 추가합니다. 텍스트 박스에:
--extra_init __iar_cstart_call_ctors
...다음 내용을 추가합니다.
IAR Embedded Workbench for ARM 6.10.1 (및 하위 버전)에서 해결방법
해당/이러한 버전(들)에서 링커는 --extra_init 커맨드 라인 옵션을 가지지 않습니다.
제안하는 방법은 명시적인 함수 호출 (예를 들어 main() 함수 이전) 을 만드는 것입니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.