Mic*_*ris 2 macos 64-bit assembly build-process
我正试图在我的Leopard MacBook Pro上用x64汇编构建Hello World.它汇总很好,但是当我尝试链接它时我得到了这个错误:ld:symbol dyld_stub_binding_helper未定义(通常在crt1.o/dylib1.o/bundle1.o中)用于推断架构x86_64
我用ld -o hello64 hello64.o -lc加载它
我的装配工是Yasm.
编辑:据我所知,与32位代码不同,你必须自己提供存根助手,因为我不知道64位存根助手是如何工作的,我会像Bastien所说的那样做并拥有GCC链接它,因为它包含它自己的存根助手.
卫生署!劳工处会自动包含crt1.o如果我的程序集的入口点已经_main
代替_start
.
您尚未指定汇编程序.就个人而言,我在使用yasm
汇编程序之前已经这样做了(并且在这方面写过一篇博文,但由于我的博客已经关闭了很长时间,我无法发布链接).基本上,一个问候世界将是:
SECTION .data
hello db 'hello, world', 10
hellolen equ $ - hello
SECTION .text
global start
start:
mov rax, 0x2000004 ; sys_write
mov rdi, 1 ; stdout
mov rsi, qword hello ; string
mov rdx, hellolen ; length
syscall
mov rax, 0x2000001 ; sys_exit
xor rdi, rdi ; exit code
syscall
Run Code Online (Sandbox Code Playgroud)
组装:
yasm -f macho64 file.asm
ld a.o
./a.out
Run Code Online (Sandbox Code Playgroud)