sublime text 本身不运行汇编代码,仅调用外部工具链(nasm+ld或gcc);必须先确认nasm和链接器已安装并可命令行调用(如nasm -v、ld -v或gcc --version有输出),再创建匹配语法scope的assembly.sublime-build文件,正确设置selector、shell_cmd及平台参数,并将文件语法设为assembly (nasm),否则ctrl+b会报错或静默失败。

Sublime Text 本身不运行汇编代码,它只调用外部工具链(nasm + ld 或 gcc);没配好构建系统就按 Ctrl+B,大概率报 sh: nasm: command not found 或静默失败。
确认 nasm 和链接器能被命令行调用
这是所有后续步骤的前提。Sublime 不检查你装没装,它只执行 shell 命令。
- 在终端里分别运行
nasm -v和ld -v(Linux/macOS)或gcc --version(Windows/macOS 替代链接),必须有输出 - Windows 用户注意:
nasmw.exe是 GUI 版,命令行要用nasm.exe,且必须加进系统PATH - macOS 用 Homebrew 安装的
nasm默认在/opt/homebrew/bin/nasm,但 Sublime 若不是从终端用subl .启动,可能读不到这个PATH
创建 Assembly.sublime-build 并匹配语法 scope
构建系统不会自动生效,必须和当前文件的语法 ID 对得上;选错语法或没绑定,Ctrl+B 就会静默失败或走默认 Python 构建。
- 右下角点击语言名(如 Plain Text),选
Assembly (NASM)—— 这一步决定selector字段写什么 - 菜单
Tools → Build System → New Build System,粘入 JSON,关键字段不能错:"selector": "source.asm"对应Assembly (NASM)语法;若你选的是Assembly (GAS),得改成"selector": "source.asm-gas" -
"shell_cmd"要按平台调整:-f elf64(Linux)、-f macho64(macOS)、-f win64(Windows);macOS 上ld不能直接链接 NASM 输出,得用gcc ${file_base_name}.o -o ${file_base_name}
为什么 Ctrl+B 后没输出、卡住、或报段错误
这不是构建配置问题,而是汇编代码本身或运行环境不匹配。Sublime 的输出面板只显示构建命令的 stdout/stderr,不接管进程 stdin 或调试能力。
- 确保代码以
_start(Linux/macOS)或main(Windows +gcc链接)为入口 - NASM 默认不生成 C runtime 初始化,直接调用
printf会段错误 - 输出无内容时,先用终端手动跑一遍构建命令,确认是代码逻辑问题还是路径/权限问题
最常被忽略的一点:Sublime 启动方式决定它能否继承 shell 的完整 PATH。哪怕 nasm 装对了、Assembly.sublime-build 写对了、语法也设对了,如果 Sublime 是双击图标启动的 macOS 应用,它大概率看不到 /opt/homebrew/bin —— 这类问题不会报错,只会静默失败。











