Ответ 1
Через некоторое время я решил использовать Linux для таких программ, потому что он обладает большей гибкостью. Вы можете использовать Linux на виртуальной машине, например Virtual Box.
Я только что собрал файл сборки с 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
Через некоторое время я решил использовать Linux для таких программ, потому что он обладает большей гибкостью. Вы можете использовать Linux на виртуальной машине, например Virtual Box.
Проблема, с которой вы сталкиваетесь, заключается в том, что вы создаете 32-битный объектный файл Linux (ELF), который несовместим с форматом объектов Mac OS X. Попробуйте переключить '-f elf' на '-f macho32'.