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. js事件的机制

    1.html事件处理程序 <button id="btn1" onclick="alert(1);">按钮1</button> 2.do ...

  2. 20145216史婧瑶《Java程序设计》第五次实验报告

    20145216 实验五<Java网络编程> 实验内容 1.掌握Socket程序的编写 2.掌握密码技术的使用 3.设计安全传输系统 实验要求 1.基于Java Socket实现安全传输 ...

  3. concatenate

    concatenate函数的作用是对numpy数组或tensor进行拼接 >>> a = np.array([[1, 2], [3, 4]]) >>> b = np ...

  4. 深入学习c++--重新审视auto

    1. auto推断变量类型 2. auto遍历 3. 自定义类可使用auto

  5. (转)openstack 资源查询常用 sql

    直接通过查询 openstack 数据库, 获得相应的常见查询结果 查询用户使用中主机, 及其主机对应信息 查询用户使用中存储, 及其存储对应信息 查询用户对应主机 mysql> select ...

  6. (Les16 执行数据库恢复)-表空间恢复

    NOARCHIVELOG模式下丢失了数据文件     数据库处于NOARCHIVELOG模式时,如果丢失任何数据文件,执行以下步骤         1.如果实例尚未关闭,请关闭实例         2 ...

  7. async await循环请求

    var sleep = function (item,time) { return new Promise(function (resolve, reject) { setTimeout(functi ...

  8. Linux基础-4.正文处理命令及tar命令

    1.使用cat命令进行文件的纵向合并 1)掌握使用cat命令的纵向合并 a)例如:使用cat命令将test1.file1.txt和file2这三个文件纵向合并为file文件的命令为: cat test ...

  9. hubilder 打包app ios高版本不支持问题

    <script type="text/javascript"> document.addEventListener('plusready', function(){ v ...

  10. table(表格)中的标签和属性

    1.表格由 <table> 标签来定义.行( <tr> ),单元格(<td> ) 字母 td 指表格数据(table data),即数据单元格的内容.数据单元格可以 ...