ссылка на программу nasm для mac os x



У меня есть некоторые проблемы с привязкой программы 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)


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

3 ответов:

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

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

nasm -f macho test.asm

ld -e _start -o test test.o

Для людей, которым нужно придерживаться формата 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

Comments

    Ничего не найдено.