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

NASM汇编语言多模块程序运行时未定义引用错误的解决方法

修复“undefined reference to 'get_int'/'print_sum'”错误的方案

嘿,这个问题其实很常见——你只是漏了编译并链接包含那两个子程序的sub4.asm文件而已!

问题根源

你遇到的undefined reference错误,是因为链接器在你提供的目标文件里找不到get_int和print_sum的具体实现:这两个函数的代码都写在sub4.asm里,但你之前只编译了main4.asm,没把sub4.asm生成的目标文件加入到链接环节中,链接器自然找不到对应的函数定义。

具体修复步骤

  1. 先编译sub4.asm生成对应的目标文件:
    nasm -f win32 sub4.asm
    
  2. 确保main4.asm已经编译完成(如果之前没做的话):
    nasm -f win32 main4.asm
    
  3. 修改链接命令,把sub4.obj也包含进去,让链接器能找到子程序的实现:
    gcc -o main4 main4.obj sub4.obj driver.c asm_io.obj
    

为什么这样能解决问题?

链接器的工作是把多个目标文件(.obj)和库文件组合成可执行文件。你之前的链接命令只提供了main4.obj(里面只有对get_int和print_sum的调用声明),但缺少它们的实现文件sub4.obj。把sub4.obj加入后,链接器就能找到这两个函数的二进制代码,顺利完成链接,生成可执行文件。

现在执行完这些步骤后,运行main4.exe应该就能正常工作啦!

内容的提问来源于stack exchange,提问作者Lee-Voug

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:42:38