ld:架构 x86_64 的未定义符号

问题描述 投票:0回答:1

我制作了一个像这样的 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。

assembly executable nasm x86-64 ld
1个回答
0
投票

使用

_main:
而不是
_start:
。链接器只是期望入口点有一个不同的名称。

© www.soinside.com 2019 - 2024. All rights reserved.