打印
[牛人杂谈]

undefined reference to `_sbrk', `_write', `_lseek', `_read'

[复制链接]
2290|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
643757107|  楼主 | 2016-2-8 18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现象:
         在用GCC编译嵌入式MCU程序时,由于使用了第三方的库,出现了类似undefined reference to `_sbrk', `_write', `_lseek', `_read'的连接错误。
  原因:
        使用了类似printf,malloc,fopen,fread之类的库函数,但是嵌入式MCU平台是不支持的。
解决办法:
       实现相应的库函数或者去掉。
    实际上,遇到这类问题的人往往是尝试修改了部分的函数调用,但是还是报类似的错误,那么原因就是没有修改完全,一般的库函数包括printf,malloc,realloc一类,fopen,fread一类等。值得注意的是我们往往会忽略fseeko函数,另外asset库函数里面调用了fprintf函数要注意。
   如何彻底确定所有函数被更换了呢,办法就是使用arm-none-eabi-nm 查看xxx.a是否还包含这些函数,另外也可以查看libc.a(对应的a文件)进行对比。
沙发
734774645| | 2016-2-9 10:23 | 只看该作者
注意的是我们往往会忽略fseeko函数,另外asset库函数里面调用了fprintf函数要注意。

使用特权

评论回复
板凳
玛尼玛尼哄| | 2016-2-10 13:20 | 只看该作者
对,就是未定义。 估计你是在调试程序遇见,若是这种情况,一般是出现了未定义的字符,需要宏定义一下。

使用特权

评论回复
地板
lovecat2015| | 2016-2-10 13:53 | 只看该作者
eclipse确实是一个很好的开源软件,但是对于入门的人来说还是先用keil mdk等软件吧

使用特权

评论回复
5
yiyigirl2014| | 2016-2-10 18:49 | 只看该作者
实际上,遇到这类问题的人往往是尝试修改了部分的函数调用,但是还是报类似的错误,那么原因就是没有修改完全,一般的库函数包括printf,malloc,realloc一类,fopen,fread一类等。值得注意的是我们往往会忽略fseeko函数,另外asset库函数里面调用了fprintf函数要注意

使用特权

评论回复
6
Thethree| | 2016-2-14 10:02 | 只看该作者
有些库加的不全,你用的是eclipse吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

213

主题

3805

帖子

11

粉丝