個人的なプロジェクトの場合、デフォルト以外のメモリアドレスでロードする実行可能ファイルを作成する必要があります。このSOの質問から、ELFのエントリアドレスを設定し、セクションアドレスを手動で変更して、実行可能ファイルが選択したアドレスに効果的に基づいているようにすることができます。ただし、答えは、これはglibcの初期化(このプロジェクトに必要)を行わない場合にのみ機能し、コンパイルするたびにセクションメモリアドレスを設定するのは難しい(退屈なことは言うまでもありません)ことを示唆しています。
ビルド時にELFのベースアドレスを設定するためのより良い方法があるはずですが、必要に応じてビルド後にスクリプトを使用して手動で設定することにします。このオプションはld
、PEポートに固有でない場合に最適です。
--image-base value
Use value as the base address of your program or dll. This is the lowest
memory location that will be used when your program or dll is loaded. To
reduce the need to relocate and improve performance of your dlls, each should
have a unique base address and not overlap any other dlls. The default is
0x400000 for executables, and 0x10000000 for dlls. [This option is specific
to the i386 PE targeted port of the linker]
ELFに相当するものはまだ見つかりません。存在しませんか?ELFファイルを自分で解析することは世界の終わりではありませんが、この機能はどこかに存在するはずです。