Nasm и gcc: 32-битная привязка не удалась (64-битная Mac OS X)

Я только что собрал файл сборки с nasm следующим образом:

$ nasm -f elf somefile.asm -o somefile.o

После этого я хочу связать somefile.o с программой с помощью gcc

$ gcc -m32 somefile.o -o someprogramm

Но при связывании файла печатается следующая ошибка:

ld: warning: ignoring file somefile.o, file was built for unsupported file format which is 
not the architecture being linked (i386)
Undefined symbols for architecture i386:
  "_main", referenced from:
     start in crt1.10.6.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

Ответы

Ответ 1

Через некоторое время я решил использовать Linux для таких программ, потому что он обладает большей гибкостью. Вы можете использовать Linux на виртуальной машине, например Virtual Box.

Ответ 2

Проблема, с которой вы сталкиваетесь, заключается в том, что вы создаете 32-битный объектный файл Linux (ELF), который несовместим с форматом объектов Mac OS X. Попробуйте переключить '-f elf' на '-f macho32'.