我正在使用Newlib 2.5.0构建arm-eabi-gcc工具链作为目标C库。
目标嵌入式系统更喜欢较小的代码大小而不是执行速度。如何配置newlib以支持更小的代码?
默认构建会产生类似代码大小超过1KB的strstr
版本。
答案 0 :(得分:2)
像这样配置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__
或printf
的测试实例。基于快速grep,这两个标志几乎相同。唯一的区别是%s
家族中的一个案例,如果为(null)
传递空指针,那么前者会将其转换为{
"id_str": "123456",
"name": "Some Name",
"protected": false,
"created_at": "Tue Mar 31 18:01:12 +0000 2009",
"tweets" : [
{
"created_at" : "Sat Apr 14 00:20:07 +0000 2012",
"id_str" : 190957570511478784,
"text" : "Tweet text",
"comments": {
"id_str":"2343",
"text":"This is comment1"
}
},
{
"created_at" : "Sat Apr 14 00:20:07 +0000 2012",
"id_str" : 190957570511478784,
"text" : "Tweet text",
"comments": {
"id_str":"2343",
"text":"This is comment2"
}
}
]
}
,但后者会向前推进,可能导致崩溃。
答案 1 :(得分:2)