This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS3137:TIClang 4.0.4.LTS &F021 闪存 API–wchar_t 不兼容性问题

Guru**** 2693565 points

Other Parts Discussed in Thread: HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1597221/tms570ls3137-ticlang-4-0-4-lts-f021-flash-api-wchar_t-incompatibility

器件型号: TMS570LS3137
主题中讨论的其他器件: HALCOGEN

工具链/IDE:

  • Code Composer Studio 12.8.1

  • TIClang 4.0.4.LTS

  • 目标:TMS570LS3137PGE

项目环境:

  • 固件使用自定义驱动程序(无 HALCoGen)。

  • 包含 TI 预编译的 F021 闪存 API 库: F021_API_CortexR4_be.lib  (版本 02.01.01)。

问题总结

将 TIClang 编译的对象与 TI 的预编译对象链接时 F021_API_CortexR4_be.lib 、我得到#16032-Derrors 关于不兼容的 wchar_t 类型: 
#16032-D 目标文件具有不兼容的 wchar_t 类型
(“F021_API_CortexR4_be.lib<...>"=“=--wchar_t=16、
“app.o"=“=--wchar_t=32)

 

我测试了添加 TIClang 选项:-fshort-wchar
这使我的对象使用--wchar_t=16、但链接器随后会报告新的错误、表明这一点  TIClang 自己的运行时库  都是针对 32 位 wchar_t 构建的:  
divsi3.s.obj in .../libclang_rt.builtins.a   =--wchar_t=32
.../libc.a 中的 e_fmod.c.obj            =--wchar_t=32
查看所有文件.../libsysbm.a.         =--wchar_t=32

因此、即使我匹配 F021 库、TIClang 也无法链接、因为其提供的运行时不支持 16 位 wchar_t

  1. TIClang 是否官方仅支持 32 位 wchar_t?
  2. F021 闪存 API 是否使用旧版 TI ARM CGT 工具链 (tiarmcc) 与 16 位 wchar 构建?
  3. 是否有官方支持的方式将 F021 与 TIClang 链接?
  4. 在没有-fshort-wchar 的情况下链接我的 TIClang 工程是否安全  并忽略该警告。