首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU MCU Eclipse RISCV链接器错误

GNU MCU Eclipse RISCV链接器错误
EN

Stack Overflow用户
提问于 2017-10-10 16:26:14
回答 1查看 347关注 0票数 1

当我构建休闲区时,我在Eclipse Oxygen上得到了这些消息。文件已编译,但无法链接。nostdlibs是链接器通用的未标记的其他库。当我不使用stranded函数时,链接器错误不会出现。

代码语言:javascript
复制
#include <stdio.h>
int main(int argc, char *argv[]) {
    printf("!RISC-V World!\n\r");
    return 0;
}

错误:

代码语言:javascript
复制
make all 
Building file: ../src/Test_1.c
Invoking: RISC-V GCC/Newlib C Compiler
riscv64-unknown-elf-gcc -mabi=ilp32 -g3 -gdwarf-2 -march=rv32i -O0 -Wall -c -MMD -MP -MF"src/Test_1.d" -MT"src/Test_1.o" -o "src/Test_1.o" "../src/Test_1.c"
Finished building: ../src/Test_1.c

Building target: Test_1.elf
Invoking: RISC-V GCC/Newlib C Linker
riscv64-unknown-elf-gcc -mabi=ilp32 -g3 -gdwarf-2 -march=rv32i -L"C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32" -Wl,-Map,Test_1.map -o "Test_1.elf"  ./src/Test_1.o   -lc
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-exit.o): In function `.L0 ':
exit.c:(.text.exit+0x34): undefined reference to `_exit'
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-sbrkr.o): In function `.L0 ':
sbrkr.c:(.text._sbrk_r+0x1c): undefined reference to `_sbrk'
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-writer.o): In function `.L0 ':
writer.c:(.text._write_r+0x28): undefined reference to `_write'
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-closer.o): In function `.L0 ':
closer.c:(.text._close_r+0x1c): undefined reference to `_close'
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-fstatr.o): In function `.L0 ':
fstatr.c:(.text._fstat_r+0x24): undefined reference to `_fstat'
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-isattyr.o): In function `.L0 ':
isattyr.c:(.text._isatty_r+0x1c): undefined reference to `_isatty'
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-lseekr.o): In function `.L0 ':
lseekr.c:(.text._lseek_r+0x28): undefined reference to `_lseek'
C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.1.1-2-20170912-2255\riscv64-unknown-elf\lib\rv32i\ilp32\libc.a(lib_a-readr.o): In function `.L0 ':
readr.c:(.text._read_r+0x28): undefined reference to `_read'
collect2.exe: error: ld returned 1 exit status
make: *** [Test_1.elf] Error 1
makefile:42: recipe for target 'Test_1.elf' failed
EN

回答 1

Stack Overflow用户

发布于 2020-09-15 19:48:57

缺少的函数来自libgloss.a。该问题表明链接器无法链接到libgloss.a,因此请检查您的系统中是否存在rv32i/ilp32的libgloss.a。

添加-lgloss可能会解决这个问题,但通常-lc-lgloss已经存在于链接器规范中。

此外,由于libc存在于riscv64-unknown-elf\lib\rv32i\ilp32中。我假设您的编译器是使用--enable-multilib构建的,所以您不需要将路径添加到libc。

要确保您的编译器是使用--enable-multilib构建的,您可以添加-v选项并查看Configured行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46661932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档