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


  現象:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM