现象:

         在用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文件)进行对比。

 

相关文章:

  • 2021-11-21
  • 2021-12-24
  • 2021-06-05
  • 2021-08-29
  • 2021-07-25
  • 2021-10-11
  • 2021-12-21
  • 2021-12-08
猜你喜欢
  • 2021-11-12
  • 2022-12-23
  • 2022-02-28
  • 2021-09-02
  • 2022-01-09
  • 2021-07-21
相关资源
相似解决方案