Компилю файл *.asm в 64x розрядный Linux. Потом через LD собираю модули в один и он мне пишет что:
ld: i386 architecture of input file `first_MBR_boot2.o' is incompatible with i386:x86-64 output.
Из этого ясно что файл имеет архитектуру 64x. Пробовал собирать проект на i386 Linux. Всё в порядке. Значит 64x разрядный Linux'е Что умолчанию nasm собирает 64х разрядные программы. якак собрать в 64х разрядном линуксе 32х разрядную программу???? А то неудобно получаеться каждый раз пересаживаться на другую машину….))
11 сентября 2009 в 15:01
ld: i386 architecture of input file `first_MBR_boot2.o' is incompatible with i386:x86-64 output.
Если перевести это на русский язык – станет ясно, что .asm-файл был откомпилен для i386, а линкер пытается собрать проект для x86_64. Соответственно для решения проблемы нужно либо сделать man nasm и найти ключ отвечающий за генерацию 64-битного кода, либо сделать man ld и найти ключ, отвечающий за генерацию 32-битного аутпута (в зависимости от желаемого результата)…
11 сентября 2009 в 15:01
только что сам нашел)
спасибо)
11 сентября 2009 в 11:02
там не чё про это не нашел… вроде можно указать опцию -o elf32. Но всё равно возвращает 64х разрядный файл.
10 сентября 2009 в 21:05
man nasm
?