You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为RISC-V汇编器AS指定链接脚本文件?

问题解决方法

你出错的核心原因:riscv-none-elf-as是汇编器,它仅负责将汇编代码转换为目标文件,不支持-T选项——这个选项是给链接器(riscv-none-elf-ld)使用的,用来指定链接脚本。

正确的构建流程需要分两步:先汇编生成目标文件,再用链接器配合链接脚本生成ELF文件。修改后的Makefile如下:

AS      = ./xpack-riscv-none-elf-gcc-14.2.0-1/bin/riscv-none-elf-as.exe
LD      = ./xpack-riscv-none-elf-gcc-14.2.0-1/bin/riscv-none-elf-ld.exe
OBJCOPY = ./xpack-riscv-none-elf-gcc-14.2.0-1/bin/riscv-none-elf-objcopy.exe

all : main.asm
    $(AS) main.asm -o main.o
    $(LD) main.o -o instr.elf -T linker.ld
    $(OBJCOPY) -O binary -j .text instr.elf instr.bin

如果觉得单独调用链接器太繁琐,也可以直接用riscv-none-elf-gcc完成汇编+链接的一站式流程,它会自动调用汇编器和链接器,同样支持-T选项指定链接脚本,简化后的Makefile如下:

GCC     = ./xpack-riscv-none-elf-gcc-14.2.0-1/bin/riscv-none-elf-gcc.exe
OBJCOPY = ./xpack-riscv-none-elf-gcc-14.2.0-1/bin/riscv-none-elf-objcopy.exe

all : main.asm
    $(GCC) main.asm -o instr.elf -T linker.ld -nostdlib -static
    $(OBJCOPY) -O binary -j .text instr.elf instr.bin

这里的-nostdlib -static是为了避免gcc自动链接嵌入式场景不需要的标准库。

内容的提问来源于stack exchange,提问作者user12312425

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:04:54