- 締切済み
FORTRAN90のコンパイル教えて下さい!
あるプログラムをコンパイルしてみたのですが、 warning LNK4084: total image size 1053564928 exceeds max (268435456); image may not run というエラー文が出てきて困っています。どうやら容量が足りないみたいなのですが。話によるとコンパイルを行なう時に容量を増やして走らせる方法があるらしいですが・・・。誰か知っていたら教えて貰えませんか??
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ultraCS
- ベストアンサー率44% (3956/8947)
メッセージは、リンクするオブジェクトが大きすぎてリンクはするけど、多分動かないよーん、という意味です。 大きな配列に対して、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などのキーワードで救済されるとは思いますが、まずは、オブジェクトを無駄に大きくしない工夫をしてください。
- Tsan
- ベストアンサー率20% (184/909)
Fortranコンパイラを作成したメーカーはなんですか? インテル?富士通?SUN?
補足
調べたのですが、よくわかりません(泣) COMPAQと書いてありますが・・・無知ですみません。
お礼
適切なアドバイスありがとうございます!早速試してみます!もっとプログラミングの知識つけるようがんばります!