首页 > 解决方案 > 由于 libSystem.dylib,程序集的链接失败

问题描述

我正在编写一些非常基本的汇编程序用于学习目的。我在装有 Intel Core i7 和 Big Sur 的 Macbook 上。

考虑以下:

.data #start data segment

x:
        .long   1
        .long   1
        .long   2
        .long   38

sum:
        .long   0

.text   #start of code segment

.globl _start
_start:
        movl    $4, %eax # EAX will serve as a number of elements remained
        mov     $0, %ebx # EBX will store the sum
        mov     $x, %ecx # ECX will point to the current element to be summed

top:    addl    (%ecx), %ebx
        dec     %eax
        jnz     top
        addl    $4, %ecx

done:   movl    %ebx, sum(%rip) #result in sum :)

如果我编译它:

as sum.s -g -o sum.o

它有效,但链接阶段抱怨:

ld -e _start sum.o -o sum                                                                                                                                                                                                                                                    ~/D/test
ld: dynamic main executables must link with libSystem.dylib for architecture x86_64

我该如何解决这个问题?为什么在这种特定情况下需要它?

如果一个简单的解决方案是使用 x86_32,我会非常满意,但我不知道如何告诉它像这样组装和链接。

标签: macosassembly

解决方案


推荐阅读