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'.