首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建用于大小优化的newlib?

如何构建用于大小优化的newlib?
EN

Stack Overflow用户
提问于 2017-04-10 18:18:46
回答 2查看 1K关注 0票数 1

我正在使用newlib2.5.0作为目标C库来构建一个arm-eabi-gcc工具链。

目标嵌入式系统将更喜欢较小的代码大小而不是执行速度。如何配置newlib以支持较小的代码大小?

默认构建会生成代码大小超过1KB的strstr版本。

EN

回答 2

Stack Overflow用户

发布于 2017-04-10 18:18:46

配置newlib如下:

代码语言:javascript
复制
CFLAGS_FOR_TARGET="-DPREFER_SIZE_OVER_SPEED=1 -Os" \
../newlib-2.5.0/configure

(我省略了用于配置的其余参数,它们不会因此问题而改变)。

没有配置标志,但是配置脚本从环境中读取某些变量。CFLAGS_FOR_TARGET表示为目标系统构建时使用的标志。

不要与CFLAGS_FOR_BUILD混淆,如果构建系统需要使任何辅助可执行文件在构建系统上执行以帮助构建过程,则将使用这些标志。

我找不到任何关于这方面的官方文档,但是搜索源代码,它包含了许多针对PREFER_SIZE_OVER_SPEED__OPTIMIZE_SIZE__的测试实例。基于快速grep,这两个标志几乎相同。唯一的区别是printf家族中的一种情况,如果为%s传递了一个空指针,那么前者会将其转换为(null),但后者会继续前进,可能会导致崩溃。

票数 2
EN

Stack Overflow用户

发布于 2017-04-11 00:16:14

Newlib中有一些fat可以用Newlib-nano来解决,它已经是here ARM Embedded的一部分,正如我们所讨论的那样(注意这篇文章来自2014年,所以信息可能已经过时了,但在当前的v6-2017中似乎也有Newlib-nano支持)。

它删除了C89之后添加的一些在基于单片机的嵌入式系统中很少使用的功能,简化了格式化I/O等复杂功能,并从非宽字符特定功能中删除了宽字符支持。关键的是,关于这个问题,默认构建已经是大小优化的(-Os)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43320597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档