런타임 초기화시 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() 함수 이전) 을 만드는 것입니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.