Невозможно выполнить двоичный файл: ошибка формата Exec при попытке выполнить программу NASM сборки x86 ⇐ Linux
Невозможно выполнить двоичный файл: ошибка формата Exec при попытке выполнить программу NASM сборки x86
Моя основная ОС — Windows 10, но у меня установлен Linux с установленной Ubuntu (WSL). Там я пытаюсь запустить простую программу сборки NASM x86 (называемую «asem.asm»), следуя этому руководству, и все работает. Вот код:
раздел .data раздел .текст глобальный _start _начинать: МОВ вых, 1 МОВ ebx, 1 ИНТ 80ч Тип моей системы:
Linux DESKTOP-AHS9L1H 4.4.0-19041-Microsoft #3570-Microsoft Пт, 29 сентября 17:00:00 PST 2023 x86_64 x86_64 x86_64 GNU/Linux Команды, которые я выполняю в текущем репозитории:
nasm -f elf -o asem.o asem.asm ld -m elf_i386 -o asem asem.o ./асем Первые два создают два файла: asem.o и asem, все как в учебнике, но последний приводит к ошибке:
-bash: ./asem: невозможно выполнить двоичный файл: ошибка формата Exec Подходит ли метод, который я использую, для моей ситуации? Если да, то как мне запустить файл? Теперь я понял, что ошибка в архитектуре, и я пробовал много разных (elf32, elf64, elfx32), но ни один из них не работает. Многообещающим был (хотя я пытаюсь запустить x86 и здесь используется elf64):
nasm -f elf64 asem.asm -o asem.o ld -o asem asem.o -m elf_x86_64 ./асем Но в результате получается:
Ошибка сегментации (дамп ядра)
Моя основная ОС — Windows 10, но у меня установлен Linux с установленной Ubuntu (WSL). Там я пытаюсь запустить простую программу сборки NASM x86 (называемую «asem.asm»), следуя этому руководству, и все работает. Вот код:
раздел .data раздел .текст глобальный _start _начинать: МОВ вых, 1 МОВ ebx, 1 ИНТ 80ч Тип моей системы:
Linux DESKTOP-AHS9L1H 4.4.0-19041-Microsoft #3570-Microsoft Пт, 29 сентября 17:00:00 PST 2023 x86_64 x86_64 x86_64 GNU/Linux Команды, которые я выполняю в текущем репозитории:
nasm -f elf -o asem.o asem.asm ld -m elf_i386 -o asem asem.o ./асем Первые два создают два файла: asem.o и asem, все как в учебнике, но последний приводит к ошибке:
-bash: ./asem: невозможно выполнить двоичный файл: ошибка формата Exec Подходит ли метод, который я использую, для моей ситуации? Если да, то как мне запустить файл? Теперь я понял, что ошибка в архитектуре, и я пробовал много разных (elf32, elf64, elfx32), но ни один из них не работает. Многообещающим был (хотя я пытаюсь запустить x86 и здесь используется elf64):
nasm -f elf64 asem.asm -o asem.o ld -o asem asem.o -m elf_x86_64 ./асем Но в результате получается:
Ошибка сегментации (дамп ядра)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение