Проблема с nasm / gcc в 64-битной Mac OS X Lion

Я читал эту статью, и в какой-то момент он дает мне эту программу nasm:

; 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

7
задан math4tots 16 February 2012 в 10:38
поделиться