WSL Ubuntu20.04下riscv64-unknown-elf-gcc找不到libc、libgloss如何解决
问题根因
你安装的riscv64-unknown-elf-gcc仅包含编译器前端,Ubuntu官方源将裸机编译所需的C运行时库(newlib、libgloss)拆分为独立软件包,未随编译器默认安装,因此链接时找不到依赖的目标文件和库文件。
修复步骤
- 第一步:执行以下命令安装缺失的依赖包
sudo apt update && sudo apt install -y libnewlib-riscv64-unknown-elf
- 第二步:验证依赖是否安装完成
执行以下命令,正常会输出三个对应文件的路径:
dpkg -L libnewlib-riscv64-unknown-elf | grep -E "(crt0\.o|libc\.a|libgloss\.a)"
- 第三步:测试编译功能
你之前执行的riscv64-unknown-elf-gcc -lc --verbose没有指定输入源文件,属于无效测试命令。可以创建一个简单的测试源文件验证:
- 新建
test.c文件,写入以下内容:
int main(void) { return 0; }
- 执行编译命令:
riscv64-unknown-elf-gcc test.c -o test.elf
没有任何报错即代表环境修复完成。
补充说明
- 如果后续编译仍提示找不到库文件,可以手动指定库搜索路径,编译时添加参数
-L/usr/riscv64-unknown-elf/lib riscv64-unknown-elf是裸机编译目标,生成的.elf文件无法直接在WSL的Ubuntu环境下运行,需要搭配qemu-riscv64静态模拟器或者RISC-V硬件平台运行。
内容的提问来源于stack exchange,提问作者Ericccccccc
相关产品推荐
相关产品推荐

