0

ELF 再配置メカニズムを研究したかったので、NASM を使用して x86 アセンブリ プログラムをアセンブルし、ELF ファイルを生成しましたが、Win32 でした。次に、mingw32 の gdb を使用してデバッグしました。うまくロードされ、「リスト」コマンドを使用してプログラムを表示できました。しかし、実行できませんでした。次のメッセージを受け取りました。

Starting program: c:\Projects\NasmProjects\Test01\Hello.o
Error creating process c:\Projects\NasmProjects\Test01\Hello.o

これを回避する方法はありますか?

4

1 に答える 1

0

これを回避する方法はありますか?

いいえ。

まず、リロケータブル オブジェクト ファイル (タイプET_REL) をアセンブルしました。そのようなファイルを「実行」する OS はありません。ELF ファイルの実行をサポートする OS には、完全にリンクされた実行可能ファイル (ET_EXECまたはタイプET_DYN) が必要です。

第 2 に、たとえ をリンクできたとしても、ET_EXECそのようなファイルをロードして実行を開始する方法を OS が認識している必要があります。Linux および Solaris カーネルはこれを認識していますが、AIX および Windows カーネルは認識していませ

于 2013-08-01T03:56:25.907 に答える