eclipse中编译出现错误undefined reference to `_sbrk'
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'的更多相关文章
- eclipse中编译时enum出现cannot be resolved to a type错误
eclipse中编译时enum出现cannot be resolved to a type错误 通常是因为eclise使用的jdk版本的问题...默认是使用的是jdk1.5 应该去选择成jdk1.6或 ...
- 解决错误---undefined reference to `pthread_create‘
今天试着敲了一下APUE的小例子,遇到了个错误 ----- undefined reference to `pthread_create.(为自己这么晚接触多线程惭愧). 上网上查了一下,借人经验. ...
- 错误 undefined reference to __cxa_guard_acquire/release
用gcc编译 c++ 程序时,出现错误 undefined reference to __cxa_guard_acquire linker error, 但是用icc可以正常编译, 问题出在stati ...
- [转载]解决linux 下多线程错误 undefined reference to `sem_init'
转自:https://blog.csdn.net/yzycqu/article/details/7396498?utm_source=copy 解决linux 下多线程错误 undefined ref ...
- 在Eclipse中编译maven项目出的问题
在Eclipse中编译Maven项目,运行 jetty:run 指令的时候会出错,在 JRE选项卡中加入: -Dorg.mortbay.util.URI.charset=GBK-Xms512m -Xm ...
- undefined reference to `_sbrk', `_write', `_lseek', `_read'
现象: 在用GCC编译嵌入式MCU程序时,由于使用了第三方的库,出现了类似undefined reference to `_sbrk', `_write', `_lseek', `_read'的连接错 ...
- Android编译错误——undefined reference to
[错误描述] 未定义引用 提示如下:bootable/recovery/minzip/Zip.c:1122: error: undefined reference to 'selabel_lookup ...
- 编译3.10内核 出现错误 “undefined reference to...." 解决方法
向内核中加入C文件后.假设想编译进内核须要改动当前文件夹下的Kconfig文件和Makefile文件. 如:加入一个test.c文件到driver文件夹下,则须要改动Kconfig文件: config ...
- Windows编译OpenCV4Android解决undefined reference to std错误
注意OpenCV 4.0.1 解决了这个问题请直接下载OpenCV 4.0.1 但是OpenCV 4.0.1作为模块导入Android Studio会有找不到R.styleable的问题 OpenCV ...
随机推荐
- js事件的机制
1.html事件处理程序 <button id="btn1" onclick="alert(1);">按钮1</button> 2.do ...
- 20145216史婧瑶《Java程序设计》第五次实验报告
20145216 实验五<Java网络编程> 实验内容 1.掌握Socket程序的编写 2.掌握密码技术的使用 3.设计安全传输系统 实验要求 1.基于Java Socket实现安全传输 ...
- concatenate
concatenate函数的作用是对numpy数组或tensor进行拼接 >>> a = np.array([[1, 2], [3, 4]]) >>> b = np ...
- 深入学习c++--重新审视auto
1. auto推断变量类型 2. auto遍历 3. 自定义类可使用auto
- (转)openstack 资源查询常用 sql
直接通过查询 openstack 数据库, 获得相应的常见查询结果 查询用户使用中主机, 及其主机对应信息 查询用户使用中存储, 及其存储对应信息 查询用户对应主机 mysql> select ...
- (Les16 执行数据库恢复)-表空间恢复
NOARCHIVELOG模式下丢失了数据文件 数据库处于NOARCHIVELOG模式时,如果丢失任何数据文件,执行以下步骤 1.如果实例尚未关闭,请关闭实例 2 ...
- async await循环请求
var sleep = function (item,time) { return new Promise(function (resolve, reject) { setTimeout(functi ...
- Linux基础-4.正文处理命令及tar命令
1.使用cat命令进行文件的纵向合并 1)掌握使用cat命令的纵向合并 a)例如:使用cat命令将test1.file1.txt和file2这三个文件纵向合并为file文件的命令为: cat test ...
- hubilder 打包app ios高版本不支持问题
<script type="text/javascript"> document.addEventListener('plusready', function(){ v ...
- table(表格)中的标签和属性
1.表格由 <table> 标签来定义.行( <tr> ),单元格(<td> ) 字母 td 指表格数据(table data),即数据单元格的内容.数据单元格可以 ...