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

汇编使用extern导入其他源文件变量提示未定义问题排查

汇编跨文件引用变量未定义问题解决

错误原因

你遇到的ld: Undefined identifier "var"报错(中文含义:链接器ld错误:未定义的标识符“var”),核心原因是定义变量的File1.asm没有将var符号对外导出。
YASM/NASM的跨文件符号引用规则要求:

  • 引用外部符号的文件:用extern <符号名>声明导入,你这部分的File2.asm写法是对的
  • 定义符号的文件:必须用global <符号名>声明导出,你当前的File1.asm缺少这一步,因此var符号只在File1内部可见,链接器找不到该符号给File2使用。

修复方法

1. 修改File1.asm代码,添加global导出声明

global var  ; 新增此行,对外导出var符号
section .data
var db 123

2. 重新汇编链接即可,示例操作命令(64位Linux环境):

# 分别汇编两个文件为ELF64格式目标文件
yasm -f elf64 File1.asm -o File1.o
yasm -f elf64 File2.asm -o File2.o
# 链接两个目标文件生成可执行程序
ld File1.o File2.o -o test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:08