1. 在eclipse中使用gcc-arm-none-eabi-7-2017-q4-major-win32编译代码的时候出现了undefined reference to `_sbrk'

e:/proj_1/34_hauwei-baudio/gcc-arm-none-eabi---q4-major-win32/bin/../lib/gcc/arm-none-eabi/7.2./
../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
collect2.exe: error: ld returned exit status

2. 经过查找发现是底层的atof函数没有实现,只有声明

extern double atof(const char *nptr);

3. 添加上atof的函数原型,从百度搜了一个代码加进去,问题解决

double atof(const char *s)
{
double power,value;
int i=;
int sign=;
//assert(s!=NULL);//判断字符串是否为空
//for(i=0;is_space(s[i]);i++);//除去字符串前的空格
sign=(s[i]=='-')?-:;
if(s[i]=='-'||s[i]=='+')//要是有符号位就前进一位
i++;
for(value=0.0;isdigit((int)s[i]);i++)//计算小数点前的数字
value=value*10.0+(s[i]-'');
if(s[i]=='.')
i++;
for(power=1.0;isdigit((int)s[i]);i++)//计算小数点后的数字
{
value=value*10.0+(s[i]-'');
power*=10.0;
}
return sign*value/power;
}

4. 解决过程,刚开始不太懂什么问题,以为是代码整合有问题,重试了几次,大致百度下,知道应该是上层应用调用了某个标准的C库函数,但是底层缺少某个函数,但是一直没搞明白是gcc-arm-none-eabi-的函数库缺少这个函数,还是我的代码缺少这个函数,只能去搜这几个函数malloc,free,realloc,printf等函数,以为是缺少这几个函数导致的,然后去搜索整个工程,发现好像没啥问题。只能从其他方向着手

5. 关键这个错误提示太变态了,完全看不出导致是少了那个函数啊!然后去gcc-arm-none-eabi-的源代码里面看了一下,sbrkr.c可惜没找到这个C文件,有点懵逼,不懂什么幺蛾子,只能用笨办法一个个C文件硬看,看是不是有啥诡异的函数,遇到觉得可能有毛病的地方都先改着试一试,直到看到这个atof这个函数,想起来以前需要添加这个函数来着,先查一下,是没有原型,只有声明,就先加上试试,然后就可以了

6. 总结起来,这个错误提示实在是无法联想到缺少atof函数,这问题不好解决。

eclipse中编译出现错误undefined reference to `_sbrk'的更多相关文章

  1. eclipse中编译时enum出现cannot be resolved to a type错误

    eclipse中编译时enum出现cannot be resolved to a type错误 通常是因为eclise使用的jdk版本的问题...默认是使用的是jdk1.5 应该去选择成jdk1.6或 ...

  2. 解决错误---undefined reference to `pthread_create‘

    今天试着敲了一下APUE的小例子,遇到了个错误 -----  undefined reference to `pthread_create.(为自己这么晚接触多线程惭愧). 上网上查了一下,借人经验. ...

  3. 错误 undefined reference to __cxa_guard_acquire/release

    用gcc编译 c++ 程序时,出现错误 undefined reference to __cxa_guard_acquire linker error, 但是用icc可以正常编译, 问题出在stati ...

  4. [转载]解决linux 下多线程错误 undefined reference to `sem_init'

    转自:https://blog.csdn.net/yzycqu/article/details/7396498?utm_source=copy 解决linux 下多线程错误 undefined ref ...

  5. 在Eclipse中编译maven项目出的问题

    在Eclipse中编译Maven项目,运行 jetty:run 指令的时候会出错,在 JRE选项卡中加入: -Dorg.mortbay.util.URI.charset=GBK-Xms512m -Xm ...

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

    现象: 在用GCC编译嵌入式MCU程序时,由于使用了第三方的库,出现了类似undefined reference to `_sbrk', `_write', `_lseek', `_read'的连接错 ...

  7. Android编译错误——undefined reference to

    [错误描述] 未定义引用 提示如下:bootable/recovery/minzip/Zip.c:1122: error: undefined reference to 'selabel_lookup ...

  8. 编译3.10内核 出现错误 “undefined reference to...." 解决方法

    向内核中加入C文件后.假设想编译进内核须要改动当前文件夹下的Kconfig文件和Makefile文件. 如:加入一个test.c文件到driver文件夹下,则须要改动Kconfig文件: config ...

  9. Windows编译OpenCV4Android解决undefined reference to std错误

    注意OpenCV 4.0.1 解决了这个问题请直接下载OpenCV 4.0.1 但是OpenCV 4.0.1作为模块导入Android Studio会有找不到R.styleable的问题 OpenCV ...

随机推荐

  1. mvvm模型

  2. java list.remove移除失败

    1. resultList.remove(i) 移除失败说明 当i为Integer类型时,通过观察源码发现当找不到该类型时就会自动去找Object类型,即remove(object),因为集合中不存在 ...

  3. 4、Spring Cloud-负载均衡 Ribbon

    4.1.RestTemplate 简介 RestTemplate是Spring Resources中一个访问RESTful API 接口的网络请求框架.   RestTemplate 的设计 则和其他 ...

  4. coco定义的小物体中物体大物体的尺寸

    http://cocodataset.org/#detection-leaderboard

  5. Spring(十五)之声明式事务

    声明式事务管理方法允许你在配置的帮助下而不是源代码硬编程来管理事务.这意味着你可以将事务管理从事务代码中隔离出来.你可以只使用注释或基于配置的 XML 来管理事务. bean 配置会指定事务型方法.下 ...

  6. EasyConnect 使用方法

    一.此处以安卓系统为例进行介绍. 1.通过谷歌市场下载 EasyConnect,安装完成后,打开EasyConnect,界面如下图 1 所示 <ignore_js_op> 2.输入 SSL ...

  7. shell一次性执行多条命令

    1.每个命令之间用;隔开说明:各命令的执行给果,不会影响其它命令的执行.换句话说,各个命令都会执行,但不保证每个命令都执行成功. 2.每个命令之间用&&隔开说明:若前面的命令执行成功, ...

  8. Python 学习笔记(十三)Python函数(一)

    函数基础 函数:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print().可以自己创建函数,这 ...

  9. SQL语句group by 与order by 执行顺序引发的一场“内斗”

    直入主题!看看下面这SQL会不会报错?如果报错应该是什么错误! --说明:黑色字体都是列SELECT application_id, index_num, num, amount FROM `cred ...

  10. node引入bootstrap npm报错

    今天node引入bootstrap npm报错 但是页面正常显示   最后发现bootstrap.min.js.map没有放在文件里  虽然不用页面中引入    另外也发现了怎么看这种错误了