我制作了一个像这样的 nasm 程序集 hello world 程序:
global start
section .text
start:
mov rax, 0x20000004
mov rdi, 1
lea rsi, [rel msg]
mov rdx, msg.len
syscall
mov rax, 0x20000001
mov rdi, 0
syscall
section .data
msg: db "Hello, World!", 10
.len: equ $ - msg
执行
nasm -f macho64 print.asm
效果很好,但是 ld -macosx_version_min 10.10 -o print print.o
会给出如下错误:
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for inferred architecture x86_64
我不知道这意味着什么:)。有人可以帮我解决这个问题吗?谢谢!附:我使用的是装有 OS X Yosemite 的 Mac。
使用
_main:
而不是_start:
。链接器只是期望入口点有一个不同的名称。