MIPS汇编项目执行make pipe时报Error 1及undefined reference错误求助
MIPS汇编链接
undefined reference to 'while'报错解决方案 这个报错属于链接阶段的符号未找到错误,绝大多数情况是汇编代码编写问题,和环境、路径配置无关。报错核心含义是:你在While标签对应的代码段中引用了名为while的符号,但整个工程中没有该符号的明确定义。
常见原因及排查方法
- 标签大小写不匹配:MIPS汇编对标签名大小写完全敏感,大概率是你定义的循环标签为大写
While:,但在跳转指令(j/b/beq/bne等)中写的目标是小写while,二者会被识别为完全不同的两个符号。 - 误用类C语法:汇编语言没有内置
while关键字,所有循环逻辑都需要手动定义标签、编写跳转指令实现,如果直接把C语言的while语法搬到汇编代码中,会被汇编器识别为未定义的外部符号。 - 多文件依赖缺失:如果
while标签定义在其他汇编源文件中,需要将对应源文件加入编译链接流程,修改Makefile规则,把所有用到的.s文件汇编后一起传入sde-ld执行链接。
快速验证方式
你可以直接在lab2.s的全局代码区域新增一行全小写的标签定义while:,重新执行make pipe,如果链接报错消失,即可确认是标签名不匹配/漏定义的问题,后续调整跳转指令的目标标签和实际定义的标签名完全一致即可。
内容的提问来源于stack exchange,提问作者Cristian Phillips
相关产品推荐
相关产品推荐

