• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

rt-thread编译时出现undefined reference to `_read‘ `_write‘链接错误

武飞扬头像
victor_zy
帮助1

问题遇到的现象和发生背景

使用easyflash时,编译时没有问题,链接时总出问题

问题相关代码(官方例程)
static void test_env(void) {
  uint32_t i_boot_times = 0;
  char *c_old_boot_times;
  char c_new_boot_times[11] = {0};

  c_old_boot_times = ef_get_env("boot_times");
  if (c_old_boot_times == RT_NULL) {
    c_old_boot_times[0] = '0';
  }

  i_boot_times = atol(c_old_boot_times);
  i_boot_times  ;
  rt_kprintf("======================================\n");
  rt_kprintf("The system now boot %d times\n", i_boot_times);
  rt_kprintf("======================================\n");
  sprintf(c_new_boot_times, "%d", i_boot_times);
  // save
  ef_set_env("boot_times", c_new_boot_times);
  ef_save_env();
}


学新通
运行结果及报错内容
LINK rt-thread.elf
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-abort.o): in function `abort':
abort.c:(.text.abort 0xa): undefined reference to `_exit'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-signalr.o): in function `_kill_r':
signalr.c:(.text._kill_r 0x12): undefined reference to `_kill'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-signalr.o): in function `_getpid_r':
signalr.c:(.text._getpid_r 0x0): undefined reference to `_getpid'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-writer.o): in function `_write_r':
writer.c:(.text._write_r 0x14): undefined reference to `_write'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-closer.o): in function `_close_r':
closer.c:(.text._close_r 0xc): undefined reference to `_close'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-fstatr.o): in function `_fstat_r':
fstatr.c:(.text._fstat_r 0x12): undefined reference to `_fstat'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-isattyr.o): in function `_isatty_r':
isattyr.c:(.text._isatty_r 0xc): undefined reference to `_isatty'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-lseekr.o): in function `_lseek_r':
lseekr.c:(.text._lseek_r 0x14): undefined reference to `_lseek'
c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m fp/hard\libc.a(lib_a-readr.o): in function `_read_r':
readr.c:(.text._read_r 0x14): undefined reference to `_read'
collect2.exe: error: ld returned 1 exit status


学新通
解答思路

看报错内容是应该链接不到libc库,于是试着打开menuconfig
使能了如下选项:
学新通然后再编译,果然可以了

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgabahf
系列文章
更多 icon
同类精品
更多 icon
继续加载