【问题标题】:Undefined reference to `_sbrk' when building Pebble watchapp构建 Pebble watchapp 时对“_sbrk”的未定义引用
【发布时间】:2014-03-22 21:37:58
【问题描述】:

有时我的 Pebble watchapp 拒绝构建并给出不友好的错误消息:

$ pebble build
[...]
[ 9/13] cprogram: build/src/project_lift.c.7.o build/appinfo.auto.c.7.o -> build/pebble-app.elf
/Users/Pavlo/pebble-dev/PebbleSDK-2.0.1/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/../../../../arm-none-eabi/lib/thumb2/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
/Users/thomas/work/arm-eabi-toolchain/build/newlib/arm-none-eabi/thumb2/newlib/libc/reent/../../../../../../../newlib-2012.09/newlib/libc/reent/sbrkr.c:60: undefined reference to `_sbrk'
collect2: error: ld returned 1 exit status

我与sbrkr.c 没有直接关系。我发现这是由我的应用程序中的特定代码行引起的。我可以得到更简洁的错误消息(可能是调用堆栈)吗?

【问题讨论】:

标签: c pebble-watch pebble-sdk


【解决方案1】:

您正在尝试链接到 pebble 不支持的函数,例如 printfsprintffopen 等。确保您调用的函数列在 Pebble api 文档中。

【讨论】:

  • 看来你是对的。你是怎么知道的?个人经历?
  • @sarfata 我也有同样的问题,并反复搜索我的代码库以查找这些函数的任何迹象或pebble_warn_unsupported_functions.h 中的任何一个,但找不到任何迹象。您对如何追踪有问题的功能有任何进一步的建议吗?
  • 您始终可以使用二分法来查找问题的根源:注释掉程序的大部分(或完全删除它们)直到它构建,然后开始添加回来直到它中断。最终你会找到罪魁祸首!
猜你喜欢
  • 2011-08-11
  • 2015-12-03
  • 2014-05-04
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多