проблема с nasm / gcc на 64-битной Mac OS X Lion
я читалэто статья, и в какой-то момент она дает мне эту программу:
; tiny.asm
BITS 32
GLOBAL main
SECTION .text
main:
mov eax, 42
ret
И говорит мне, чтобы запустить следующие команды:
$ nasm -f elf tiny.asm
$ gcc -Wall -s tiny.o
Я получил следующую ошибку:
ld: warning: option -s is obsolete and being ignored
ld: warning: ignoring file tiny.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Я рискнул догадаться, в чем может быть проблема, и изменил строку BITS следующим образом:
BITS 64
Но потом, когда я бегуnasm -f elf tiny.asm
Я получил:
tiny.asm:2: error: `64' is not a valid segment size; must be 16 or 32
Как мне изменить код для работы на моей машине?
Редактировать:
Я воспользовался советом Алекса из комментариев и скачал более новую версию. Тем не мение,
./nasm-2.09.10/nasm -f elf tiny.asm
жалуется
tiny.asm:2: error: elf32 output format does not support 64-bit code
С другой стороны,
./nasm-2.09.10/nasm -f elf64 tiny.asm
gcc -Wall -s tiny.o
жалуется
ld: warning: ignoring file tiny.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status