Создание переносимого исполняемого файла с использованием 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).