在 Ubuntu 中使用 FASM 制作可移植可执行文件

Making a Portable Executable using FASM in Ubuntu

堆栈社区!

我目前在 Ubuntu 17.10 学习汇编语言。当我在 Windows 时,我使用了一个名为 'win32a.inc'"MyLib.inc" 的库来 read_eaxprint_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' 是 Windows 上的默认 fasm 库。我不知道如何在 Linux 中使用它。不过,我有所有 Windows 库的备份 ;_;

Is there a way I can make a portable executable in Linux using FASM ??

您可以在任何 OS.

上编译为 FASM 支持的任何类型的文件

诀窍是 Windows FASM 端口将文件名视为不区分大小写,但 Linux FASM 将它们视为区分大小写。

因此,请检查 include 指令中使用的文件名的大小写。

FASM 默认包含库的真实文件名是全部大写。因此,如果您想使用 Linux(或任何其他 Unix 类型 OS)FASM 编译此代码,则需要使用 WIN32A.INC