我想学习ELF重定位机制,所以我使用NASM组装了一个x86汇编程序来生成ELF文件,但是在Win32下。然后我用mingw32的gdb来调试它。它加载得很好,我可以使用“list”命令查看程序。但是,我无法运行它。我收到了以下消息:
Starting program: c:\Projects\NasmProjects\Test01\Hello.o
Error creating process c:\Projects\NasmProjects\Test01\Hello.o
有解决方法吗?
答案 0 :(得分:0)
有解决方法吗?
没有
首先,您已组装了一个可重定位目标文件(类型为ET_REL
)。没有操作系统会“运行”此类文件 - 支持执行ELF文件的操作系统需要完全链接的可执行文件(类型为ET_EXEC
或ET_DYN
)。
其次,即使您设法链接ET_EXEC
,您仍然需要您的操作系统知道如何加载并开始执行此类文件。 Linux和Solaris内核确实知道这一点,AIX和Windows内核不。