【发布时间】:2018-03-20 06:35:15
【问题描述】:
堆栈社区!
我目前正在使用 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' source file Missing.
'win32a.inc' 是 Windows 上的默认 fasm 库。我不知道如何在 Linux 中使用它。我有所有 Windows 库的备份;_;
有没有一种方法可以在 Linux 中使用 FASM 制作可移植的可执行文件??
【问题讨论】:
-
win32a.inc是否随 FASM 的 Windows 发行版一起提供?您是否尝试过以这种方式获取它的副本?如果您不尝试包含您没有的文件,FASM 是否会生成 PE 可执行文件?如果是这样,您的问题是“我如何获得这些 FASM 库”,而不是“我如何制作 PE”。 -
win32a.inc 带有 ›FASM for Windows‹-package (flatassembler.net/download.php),你不能在 linux 上使用它,因为 API 和系统调用非常不同。汇编不是可移植软件的首选语言。不过,您可以为 windows 和 linux 创建具有相同功能的自定义库。
-
@fuz :他的问题是他将在 wine 下运行他的可执行文件。
-
@sivizius 那么,我是否必须在运行 Win10 的 Linux 下使用 Virtual Box 才能制作 WINDOWS PORTABLE EXECUTABLE 文件??
-
不,你仍然可以在linux上用fasm制作windows-executables,如果你下载了windows的include-files,但你不能用相同的文件创建linux-executables,只要你没有具有相同功能的 windows 和 linux 库。