7.xx로 빌드 된 라이브러리가 8.11에서 경고 메시지를 발생시기는 경우

기술노트 20171003

아키텍처:

Arm

컴포넌트:

linker

업데이트:

2021-05-27 오전 10:34

소개 

IAR Embedded Workbench for ARM 버전 7.xx와 버전 8.11 (혹은 상위버전) 사이의 wchar_t에 대한 크기와 내부 인코딩의 차이에 의해, 링커 메시지는

Warning [Lt009]: Inconsistent wchar_t size

버전 7.xx로 빌드 된 라이브러리가 버전 8.11 (혹은 상위버전)에서 사용될 때 발생합니다.

논의

IAR Embedded Workbench for Arm 버전 7.80 (혹은 하위버전)에서, wchar_t의 크기는 2bytes이고 버전 8.11에서 wchar_t의 크기는 4bytes입니다. 게다가 각 버전의 객체의 wchar_t객체들에 대한 내부 인코딩은 다릅니다.

이말은 프로그램에서 wchar_t를 사용하는 경우, 버전 7.80과 8.11 각각에서 빌드 된 목적파일(object files)을 혼용해서 사용할 때에 동작은 예상할 수 없습니다. 일반적으로 우리는 한 버전에서만 목적코드를 사용하기를 강력히 권합니다. 또한 주 업데이트 버전 7.8 부터 8.11에 대해서는, 모든 코드는 반드시 다시 빌드되어야 합니다.

만약 재 빌드 하지 않으려면, 적어도 다음의 동작을 수행해야합니다:

  1. a)  버전 7.xx로 빌드 된 목적코드(object code)를 재빌드 하거나, C++로 작성합니다.
  2. b)  라이브러리에 wchar_t를 포함하는 경우, 버전 8.11로 라이브러리를 재 빌드 합니다.
  3. c)  버전 7.xx로 빌드 된 라이브러리가 wchar_t를 포함하지 않는다면, 그리고 버전 8.11 (혹은 상위버전)으로 빌드 된 프로그램이 예상대로 잘 동작한다면, 경고 메시지를 무시할 수 있습니다. 경고 메시지를 더 보기 원치 않는 경우 다음을 수행하시기 바랍니다:
    1. Project>Options>Linker>Diagnostics 선택
    2. Suppress these diagnostics 선택 후 다음으로 지정 : Lt009
    3. OK 클릭

알림1: 버전 8.11 (혹은 상위버전)의 프로젝트에 나중에 7.xx 라이브러리를 추가하는 경우, 상기에서 언급한 무시된 진단 옵션 (“Lt009”)를 제거한 뒤에 단계 a-c를 재반복 하시기 바랍니다.

결론

IAR Embedded Workbench for Arm 버전 7.xx로 빌드 된 wchar_t를 사용하는 라이브러리의 경우 반드시 버전 8.11로 재 빌드 되어야 합니다.

 

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

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