программа Link NASM для Mac OS X - PullRequest
4 голосов
/ 26 мая 2010

У меня есть некоторые проблемы с подключением программы NASM для MacOS:

GLOBAL _start
SEGMENT .text
_start:
    mov ax, 5
    mov bx, ax
    mov [a], ebx
SEGMENT .data
a   DW 0
t2  DW 0

fry$ nasm -f elf  test.asm
fry$ ld -o test test.o -arch i386
ld: warning: in test.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: could not find entry point "start" (perhaps missing crt1.

fry$ nasm -f macho  test.asm
fry$ ld -o test test.o -arch i386
ld: could not find entry point "start" (perhaps missing crt1.o)

Кто-нибудь может мне помочь?

Ответы [ 3 ]

7 голосов
/ 26 мая 2010

Компоновщик Mac OS X не может связывать объекты ELF. Работает только с исполняемым форматом Mach-O. Если вы не хотите понять, как переводить объектные файлы, вам, вероятно, будет лучше писать код, который работает с ассемблером Mac OS X.

Редактировать: Как @Fry упоминает в комментарии ниже, вы можете nasm выставлять объекты Mach-O. В этом случае проблема проста - снимите _ с _start в обоих местах исходного файла. Результат ссылки отлично.

6 голосов
/ 07 декабря 2010
nasm -f macho test.asm

ld -e _start -o test test.o
0 голосов
/ 03 декабря 2015

Для людей, которым нужно придерживаться формата elf и разрабатывать на Mac, вам нужен кросс-компилятор ...

http://crossgcc.rts -software.org / doku.php? Id =compiling_for_linux

Тогда вы можете приступить к чему-то похожему на это ...

/usr/local/gcc-4.8.1-for-linux32/bin/i586-pc-linux-ld -m elf_i386 -T link.ld -o kernel kasm.o kc.o
...