That's a bit annoying, especially since you're already using raw syscall numbers anyways. Here's how to make it static:
.intel_syntax noprefix #include <sys/syscall.h> #define UNIX_SYSCALL 0x2000000 .globl start start: mov rax, UNIX_SYSCALL | SYS_write mov rdi, 1 lea rsi, text[rip] lea rdx, length syscall mov rax, UNIX_SYSCALL | SYS_exit xor rdi, rdi syscall text: .asciz "Hello, world!\n" .equ length, . - text
ld -arch x86_64 -o hello hello.o -macosx_version_min 10.8 -static -e _main