我正在使用newlib2.5.0作为目标C库来构建一个arm-eabi-gcc工具链。
目标嵌入式系统将更喜欢较小的代码大小而不是执行速度。如何配置newlib以支持较小的代码大小?
默认构建会生成代码大小超过1KB的strstr版本。
发布于 2017-04-10 18:18:46
配置newlib如下:
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),但后者会继续前进,可能会导致崩溃。
https://stackoverflow.com/questions/43320597
复制相似问题