3

我正在使用 GCC 交叉编译器 (arm-none-eabi-) 为 ARM 架构(裸机)开发程序。为了保持代码较小,我使用“--specs=nano.specs”链接器标志来链接 newlib-nano。我遇到的问题是在 printf 中支持“long long”,即:

long long int val = 1234;
pritnf("%lld", val);

添加“-u _printf_float”链接器标志并不能解决这个问题。它确实导致代码大小增加了 9kB,但它似乎只是添加了浮点支持,没有“long long”支持。链接 newlib(删除“--specs=nano.specs”标志)——尽管确实解决了问题——是不可接受的,因为它会导致代码大小增加 46kB。

是否有任何标志仅重新启用对 printf 的 newlib-nano 版本的“long long”支持?

4

1 回答 1

2

对 newlib-nano 不太了解(它是一些 fork 吗?),但 newlib 也没有默认支持 long long 说明符,所以这可能会有所帮助:

  • --enable-newlib-io-long-long用标志重新配置你的 newlib
  • 重建
于 2015-10-05T13:10:12.090 回答