• 締切済み

FORTRAN90のコンパイル教えて下さい!

あるプログラムをコンパイルしてみたのですが、 warning LNK4084: total image size 1053564928 exceeds max (268435456); image may not run というエラー文が出てきて困っています。どうやら容量が足りないみたいなのですが。話によるとコンパイルを行なう時に容量を増やして走らせる方法があるらしいですが・・・。誰か知っていたら教えて貰えませんか??

みんなの回答

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.2

メッセージは、リンクするオブジェクトが大きすぎてリンクはするけど、多分動かないよーん、という意味です。 大きな配列に対して、DATA文や、型宣言、DIMENSION文で初期化していませんか。 FORTRANに限りませんが、配列の初期値を定義すると、それは、静的に配置されるので、オブジェクトの肥大化を招きます。 型宣言文やDIMENSION文ではサイズだけを定義し、プログラムの最初にDOループで初期設定したり、ファイルから初期値を読むように変更してください。 REAL*8 RDATA(1000,1000) / 1000000*0. / とすると、これだけで、オブジェクトとして8メガバイト消費されてしまいます。これを REAL*8 RDATA(1000,1000) do 10 i=1,1000 do 10 j=1,1000 real(j,i) = 0. 10 continue とすれば、おそらく、オブジェクトは数100バイトしか消費しません。 まあ、実行する際、ロード後のサイズは多分同じですが、オブジェクトファイルのサイズは全く違うはずです。 メモリモデルの指定できるコンパイラなら、Hugeなどのキーワードで救済されるとは思いますが、まずは、オブジェクトを無駄に大きくしない工夫をしてください。

humi0
質問者

お礼

適切なアドバイスありがとうございます!早速試してみます!もっとプログラミングの知識つけるようがんばります!

  • Tsan
  • ベストアンサー率20% (184/909)
回答No.1

Fortranコンパイラを作成したメーカーはなんですか? インテル?富士通?SUN?

humi0
質問者

補足

調べたのですが、よくわかりません(泣) COMPAQと書いてありますが・・・無知ですみません。

関連するQ&A

専門家に質問してみよう