0

プログラムをコンパイルして、メモリにロードされたときにそのすべてのセクションが 4G スペースを超えるようにしたいと考えています (私は x86_64 マシンを使用しています)。.text、.data、.bss セクションを指定しようとしていますが、十分ではないようです。私がやろうとしていることを行う便利な方法はありますか? ありがとう。

注: http://sourceware.org/ml/binutils/2012-08/msg00480.html問題を解決してください。

4

1 に答える 1

0

このスレッドでは、64ビットバイナリを4G仮想空間の上に移動する方法について説明します。-fPIE -pieつまり、実行可能ファイルを任意の仮想アドレスにロードできるようにするオプションをコンパイラとリンカに追加する必要があります。-pieリンカに、4G仮想アドレスにロードできるライブラリに対してオブジェクトファイルをリンクするように要求します。デフォルトのライブラリは通常、-mcmodel=small2G仮想空間を超えてロードできないモードでコンパイルされます。詳細については、 3.17.15Intel386およびAMDx86-64オプションを参照してください。

于 2012-09-04T03:14:41.580 に答える