【问题标题】:Keil armcc generates typeinfo names even with --no_rtti_data即使使用 --no_rtti_data,Keil armcc 也会生成类型信息名称
【发布时间】:2019-02-25 05:35:42
【问题描述】:

我在 Keil 5.25 中使用 ARM Compiler 5 (ARMCC)。我正在使用 c++11。

我正在使用 c++11 和 std::function 的自制类似物(因为 armcc 提供的 STL 中没有 std::function)。 最近我注意到我的二进制文件包含几个看起来很奇怪的字符串,比如N8callback14DelegateLambdaIZN5tasks13BatteryTask_t6worker 等等。

我在链接器 .map 文件中查找它们的地址,发现这些是我的一些 lambda 的“类型信息名称”。

我很确定我不需要这些名称,也不会使用它们。但是即使使用 --no_rtti 和 --no_rtti_data 编译器仍然会生成它们,即使使用 --feedback 链接器也不会丢弃它们。

我怎样才能摆脱它们?它们往往会占用大量空间。

【问题讨论】:

    标签: c++ keil typeinfo armcc


    【解决方案1】:

    我联系了 ARM 支持并得到了答复(不是确切的报价),这是编译器本身的问题,而且由于 armcc 现在处于维护支持下,因此不太可能很快得到修复。

    作为一种解决方法,他们建议使用编译器选项 --no_vfe,但这会导致代码大小增加(在我的情况下根本不起作用)。

    为了更好地支持 c++11 迁移到 armclang,建议使用。

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 2020-12-03
      • 2012-02-18
      • 2021-03-07
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      相关资源
      最近更新 更多