Создание переносимого исполняемого файла с использованием FASM в Ubuntu

Стек сообщества!

В настоящее время я нахожусь на Ubuntu 17.10 и изучаю язык ассемблера. Когда я работал в Windows, я использовал библиотеки с именами "win32a.inc" и "MyLib.inc" для read_eax и print_hex. Синтаксис раньше был таким:

format PE console
include 'win32a.inc'
entry start
section '.text' code readable executable
start:
     mov eax,0xffff
     call print_eax
push 0
call [ExitProcess]

include 'MyLib.inc'

Но не имея хорошего опыта работы с Windows, я перешел на Linux. Я сделал это, чтобы установить FASM:

sudo apt-get install fasm

Но когда я пытаюсь создать исполняемый файл (я планирую запустить его с помощью Wine), я получаю сообщение об ошибке на терминале: отсутствует исходный файл 'win32a.inc'.

'win32a.inc' - это библиотека fasm по умолчанию в Windows. Я не знаю, как я мог бы использовать это в Linux. У меня есть резервная копия всех библиотек Windows, хотя;_;

Есть ли способ сделать переносимый исполняемый файл в Linux с помощью FASM??

1 ответ

Вы можете компилировать файлы любого типа, поддерживаемые FASM в любой ОС.

Хитрость заключается в том, что порт FASM для Windows обрабатывает имена файлов как нечувствительные к регистру, а в Linux FASM они учитывают регистр.

Итак, проверьте регистр имен файлов, используемых в include директивы.

Все настоящие имена файлов включаемых по умолчанию библиотек FASM - это UPPERCASE. Итак, вам нужно использовать WIN32A.INC если вы хотите скомпилировать этот код с FASM для Linux (или любой другой ОС типа Unix).

Другие вопросы по тегам