singlepost

NASM x86_64 под i386 << На главную или назад  

Компилю файл *.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х разрядную программу???? А то неудобно получаеться каждый раз пересаживаться на другую машину….))

4 ответов в теме “NASM x86_64 под i386”

  1. 4
    Сергей Старовой ответил:

    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-битного аутпута (в зависимости от желаемого результата)…

  2. 3
    Лёха Воронин ответил:

    только что сам нашел)
    спасибо)

  3. 2
    Лёха Воронин ответил:

    там не чё про это не нашел… вроде можно указать опцию -o elf32. Но всё равно возвращает 64х разрядный файл.

  4. 1
    Леонид Максимов ответил:

    man nasm
    ?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.