Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 28.08.2016
Сообщений: 25

Ошибка при компоновке объектного файла - несовместимость архитектуры (разрядности)

20.08.2017, 09:11. Показов 4445. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для Ubuntu изучайте NASM – это лучший вариант, ИМХО
Начал изучать NASM по книге где программы пишутся под процессор IA32 - не сработало
Говорит что процессор i386 не поддерживает. Так я запутался еще сильнее. Получается НАСМ не самый удачный выбор или как?
 Комментарий модератора 
Обсуждение выделено из темы
Ассемблер для нуля
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.08.2017, 09:11
Ответы с готовыми решениями:

Предварительная компоновка dll при компоновке exe файла. Где ошибка?
создал длл файл. /*********************************************************** Module: Dll.h Хидер файл дллки. ...

Несовместимость bluetooth мыши и ОС из-за разрядности
Добрый день! Подскажите, пожалуйста, что делать. На компе стоит 64-разрядная Windows 10 А блютуз-мышь работает только с...

Ошибка при компоновке
Вот быдлокод: #include "stdafx.h" #include <iostream> using namespace std; class Cat{ public: Cat(int initalAge); ~Cat(); ...

6
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
20.08.2017, 11:08
Ничего не понятно.
IA32 - это как раз 386 и все его потомки.
Цитата Сообщение от Axel92 Посмотреть сообщение
Говорит что процессор i386 не поддерживает.
Кто говорит ? NASM ? Не могет того быть.

Добавлено через 4 минуты
Вот никогда не пользовался NASM. Но скачал. Поставил. Написал примитивнух хрень
Code
1
2
3
4
5
    section code
 
    mov eax, 5
 
    int 20h
Потом сунул на компиляцию вот так
nasm -f bin -o a.com a.asm
и он скомпилировал и не подавился. Ему даже специально не надо указывать какой тип процессора поддерживать, как это требуется TASM и MASM. NASM без дополнительных пояснений считает, что я пишу именно под 386. Он по умолчанию его и поддерживает.
0
7 / 7 / 5
Регистрация: 30.12.2016
Сообщений: 100
20.08.2017, 13:21
возми tasm masm GUI Turbo Assembler x64 emu8086
0
0 / 0 / 1
Регистрация: 28.08.2016
Сообщений: 25
20.08.2017, 16:05  [ТС]
Проще все показать...

Написал прогу sample.asm
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
;Assembly language program to find sum
;
;   Objective: To add two integers
;   Inputs:    Two integers.
;   Output:    Sum of input numbers
 
    %include "io/io.mac"
 
    .DATA
    prompt1_msg db 'Enter first number: ', 0
    prompt2_msg db 'Enter second number: ', 0
    sum_msg     db 'Sum is: ', 0
    error_msg   db 'Overflow has occurred!', 0
 
 
    .UDATA
    number1  resd 1   ; stores first number
    number2  resd 1   ; stores second number
    sum  resd 1   ; stores sum
 
 
    .CODE
        .STARTUP
        ; prompt user for the first number
        PutStr prompt1_msg
        GetLInt [number1]
 
        ; prompt user for the second number
        PutStr prompt2_msg
        GetLInt [number2]
 
        ; find sum of two 32-bit numbers
        mov EAX, [number1]
        add EAX, [number2]
        mov [sum], EAX
 
        ; check for overflow
        jno no_overflow
        PutStr  error_msg
        nwln
        jmp done
 
        ; display sum
    no_overflow:
        PutStr sum_msg
        PutLInt [sum]
        nwln
    done:
        .EXIT
компилирую nasm -f elf sample.asm

получается файл sample.o

связываю его с файлом ld -s -o sample sample.o io.o
терминал по предательски пишет:
ld: i386 architecture of input file `sample.o' is incompatible with i386:x86-64 output
ld: i386 architecture of input file `io.o' is incompatible with i386:x86-64 output
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,304
Записей в блоге: 12
20.08.2017, 16:19
Ну, так всё правильно. Ты делаешь всё в 64-битном Линухе. Для nasm опция -f elf означает формат elf32 (т.е. 32 бита), а для ld отсутствие ключа говорит о компиляции в разрядность системы, т.е. в 64 бита. Поэтому надо писать ld -m elf_i386

Добавлено через 40 секунд
Причём тут вообще NASM, если ошибку выдаёт LD ???

Добавлено через 2 минуты
Что там за io.mac? Скинь, плиз, интересно
Ну и другие include-файлы, если есть...
2
0 / 0 / 1
Регистрация: 28.08.2016
Сообщений: 25
20.08.2017, 16:54  [ТС]
Спасибо огромное друг, все заработало!
Но я так и не понял что ты написал, все эти биты и т.д.
Мне кажется нужно было тысячу раз подумать прежде чем переходить на асму.

И вообще, чем отличается ld и nasm?

Добавлено через 5 минут
Это ИО макрос для ассемблера. Сайт не дает мне загрузить эти файлы, давай на мыло отправлю
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
20.08.2017, 18:21
Цитата Сообщение от Axel92 Посмотреть сообщение
И вообще, чем отличается ld и nasm?
Бывают такие ассемблеры, что из исходного текста сразу создают исполняемый файл.
А бывает так, что это делается в два этапа. Сначала ассемблер из исходного текста создает объектный файл. А потом компоновщик из одного или нескольких объектных файлов собирает исполняемый. Так вот в твоем случае ассемблер nasm делает первый этап, а компоновщик (или по другому линкер, линковщик) ld второй.

Добавлено через 3 минуты
Цитата Сообщение от Axel92 Посмотреть сообщение
Но я так и не понял что ты написал, все эти биты и т.д.
Ты слыхал, что существуют 32-разрядные Винды и 64-х разрядные Винды ? И точно также и Линуксы ? Они ведь чем-то друг от друга отличаются ?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.08.2017, 18:21
Помогаю со студенческими работами здесь

Как собрать проект под все популярные платформы с учетом разрядности, архитектуры?
Добрый вечер! Сразу хочу сказать, что перед созданием этой темы я много искал в Интернете, пробовал гайды, но в итоге еще больше...

стивен прата стр 433 листинг 9.1 а также 9.2 и 9.3 ошибка при компоновке файлов
компилятор visual studio 2013 в книге написано что не надо включать #include. я так и не понял почему не надо, если здесь он защищен. ...

Почему расширение при запуске объектного файла опускают?
Такая запись мне непонятна: dy636363@dy636363-PC:~/Рабочий стол$ java Welcome Добавлено через 7 минут *файла с байт-кодом, ошибся

Ошибка при построении архитектуры if-else
Добрый день! Написал программу по условию: (см. 1 картинку) Выглядит программа так: #include "stdio.h" ...

Ошибка при переходе на серверную версию: Значение не является значением объектного типа (ПроверитьВозможностьРаботыПользователя)
Начал переходить на серверную версию БД, сервером взял MSSQL Express платформа 1C 8.2.14.540. Вообщем выгрузил конфигурацию, выгрузил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru