1

特定のバイナリが 4 GB の物理メモリ内にロードされるようにしようとしています。LD オプションに --image-base が表示されます。ドキュメントには次のように記載されています。 [このオプションは、リンカーの i386 PE ターゲット ポートに固有です]

Linux でこのオプションを使用すると、認識されないオプション '--image-base' が表示されます。

Linux で特定のバイナリが 4 GB 未満で読み込まれるようにする方法はありますか?

4

1 に答える 1

2

特定のバイナリが 4 GB の物理メモリ内にロードされるようにしようとしています。

Linux カーネルではなく、ユーザー レベル (アプリケーション) コードについて話していると仮定すると、物理メモリについては何も保証できません。仮想メモリについてのみ保証できます。

32ビットシステムを使用している場合、そのシステムではすべてのメモリが4GB未満であるため、質問は意味がありません。

したがって、あなたの質問は次のようになります0x100000000

x86_64答えを使用していると仮定すると、デフォルトのリンクオプションはメインの実行可能ファイルに対してすでにそれを行っているため(共有ライブラリに対してはそうではありません)、特別なことをする必要はありません。すべてのコードを 4GB 境界でロードする場合は、アプリケーションを-staticフラグでリンクします (ただし、これを行うと、さまざまな理由で機能しない可能性があり、バイナリにもライセンス制限が課されることに注意してください)。

于 2012-07-15T05:50:29.800 に答える