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

2 ответа

Решение

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

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

Другие вопросы по тегам