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에 대해서는, 모든 코드는 반드시 다시 빌드되어야 합니다.
만약 재 빌드 하지 않으려면, 적어도 다음의 동작을 수행해야합니다:
- a) 버전 7.xx로 빌드 된 목적코드(object code)를 재빌드 하거나, C++로 작성합니다.
- b) 라이브러리에 wchar_t를 포함하는 경우, 버전 8.11로 라이브러리를 재 빌드 합니다.
- c) 버전 7.xx로 빌드 된 라이브러리가 wchar_t를 포함하지 않는다면, 그리고 버전 8.11 (혹은 상위버전)으로 빌드 된 프로그램이 예상대로 잘 동작한다면, 경고 메시지를 무시할 수 있습니다. 경고 메시지를 더 보기 원치 않는 경우 다음을 수행하시기 바랍니다:
- Project>Options>Linker>Diagnostics 선택
- Suppress these diagnostics 선택 후 다음으로 지정 :
Lt009
- OK 클릭
알림1: 버전 8.11 (혹은 상위버전)의 프로젝트에 나중에 7.xx 라이브러리를 추가하는 경우, 상기에서 언급한 무시된 진단 옵션 (“Lt009”)를 제거한 뒤에 단계 a-c를 재반복 하시기 바랍니다.
결론
IAR Embedded Workbench for Arm 버전 7.xx로 빌드 된 wchar_t
를 사용하는 라이브러리의 경우 반드시 버전 8.11로 재 빌드 되어야 합니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.