• 締切済み

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

  • FORTRANについて

    現在FORTRANを使用しているのですが,そのプログラムを回す際「total image size 861618176 exceeds max (268435456); image may not run」と警告が出ます。このまま,回すと『RUN-TIME ERROR』となってプログラムが止まってしまいます,これを解決するにはどうすればいいのでしょうか? 回答よろしくお願いします。 

  • Fortran90/Fortran95→Fortran77

    大学の授業でFortranを使ったプログラミングを勉強しています。 以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます) 大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^; 家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコンパイルしているからだと思います(全くの勘違いだったら指摘して下さい) Fortran90/Fortran95の開発環境がフリーで整えばいいのですが、見つからないのでプログラムを修正したいと思います そこで、力を貸していただきたいのです 前置きが長くなりましたが、エラーが出る文は以下のところです open(8,file='freq_ex13.dat',action='write',status='replace') ここを、Fortran77のコンパイラでコンパイルできるようにアドバイスを下さい よろしくお願いします

  • fortran sqrtコンパイルエラー

    プログラムを書き直していて以下の様なエラーが出てしまいます。 以前sqrt関数を書いたときは以下の様なエラーは出てこなかったのですが、最近やたらFunctionのエラーがよく出ます。コンパイルに問題があるのでしょうか?自分のコンパイルを調べるにはどうしたらわかるのでしょうか?よろしくお願いします。 In file init.f90:52 rf = sqrt((nx-5)**2+(ny-5)**2+(nz-5)**2) 1 Error: Type of argument 'x' in call to 'sqrt' at (1) should be REAL(4), not INTEGER(4) In file init.f90:52 rf = sqrt((nx-5)**2+(ny-5)**2+(nz-5)**2) 1 Error: Function 'sqrt' at (1) has no implicit type

  • DirectX8でコンパイルエラー

    DirectX8実践プログラミングという本についてくるサンプルプログラムを コンパイルしようとしているのですが、 sprite.obj : error LNK2001: 外部シンボル "_D3DXCreateSprite@8" は未解決です sprite.obj : error LNK2001: 外部シンボル "_D3DXCreateTextureFromFileA@12" は未解決です sprite.obj : error LNK2001: 外部シンボル "_Direct3DCreate8@4" は未解決です .\Debug/spriteanimate.exe : fatal error LNK1120: 外部参照 3 が未解決です。 link.exe の実行エラー となってしまいます。DirectXを使っての勉強をはじめたばかりなのですが いきなりつまってしまいました。 おそらくライブラリが見つからないのかと思うのですが ライブラリのディレクトリ設定でC:\mssdk\libも追加されていました。 DirectX8SDKについてくるサンプルはコンパイル出来るのですが どういう理由が考えられるでしょうか?

  • FORTRANコンパイル時について

    土木の設計でFORTRANで書かれたプログラムを使用しているのですが,コンパイルする際に下記内容のエラー(?)が出ていますが,コンパイル自体は完了しています。 これって何かオカシイのでしょうか。 ■C:\Documents and Settings\ETP5\デスクトップ\programs_2D> ftn77 /link elastc.f [Salford FTN77/Win32 v4.03, Copyright (c) Salford Software Ltd. 1988-1998] Licensed to: FTN77 Personal Edition Department: Non-commercial use only 0130) END COMMENT - STXY has not been used COMMENT - SSIY has not been used COMMENT - SSIX has not been used NO ERRORS,3 COMMENTS [<ELASTC2D>FTN77 Ver 4.03] NO ERRORS [<DATA_IN>FTN77 Ver 4.03] NO ERRORS [<FIX>FTN77 Ver 4.03] NO ERRORS [<INIT>FTN77 Ver 4.03] NO ERRORS [<CALC_SIG>FTN77 Ver 4.03] 0391) IF((TK(K,I-K+1).EQ.0.D0).OR.(X(K).EQ.0.D0)) GOTO 2 WARNING - The use of .EQ. or .NE. with non-integer operands can produce misleading results WARNING - The use of .EQ. or .NE. with non-integer operands can produce misleading results NO ERRORS,2 WARNINGS [<LEQ>FTN77 Ver 4.03] NO ERRORS [<LEQ1>FTN77 Ver 4.03] NO ERRORS [<MAKE_GAMX>FTN77 Ver 4.03] NO ERRORS [<CALC_TF>FTN77 Ver 4.03] NO ERRORS [<MAKE_TK>FTN77 Ver 4.03] NO ERRORS [<WRITE_SUB>FTN77 Ver 4.03] Creating executable: elastc.exe 宜しくお願い致します。

  • intel fortranコンパイラについて

    現在intel visual fortran コンパイラー11を使用しています その中で大規模な配列を使用する必要があり プラットフォームをx64にしコンパイルをしたところ LNK1248 イメージ サイズ ('size') が最大許容サイズ (80000000) を超えています と出てリンクができませんでした。x64でも4GBを確保する事は出来ないのでしょうか 以上宜しくお願い致します

  • WindowsXPでfortranプログラムがコンパイルできません

    パソコンを新しくしたのですが,今まで使えていたfortranのコンパイラが使えなくなってしまいました.何か適当なソフトを探しているのですが,下記問題点を考慮すると,どのソフトを購入するべきなのか分かりません.どなたかご存知の方がいらっしゃればご教授頂きたく,よろしくお願い致します. ・フォートランコンパイラソフト:不明(昔OS2上で動かすために購入したソフト) ・Win95・98・2000では問題なく作動した ・WinXPでは下記において問題発生. ★サブルーチンが多数組み合わせた,大容量プログラムではエラー発生. ★1つのサブルーチンの容量が大きいものでもエラー発生. ★サブルーチンの数が少ないもの,あるいは1つのサブルーチンの容量が小さいものはコンパイル可能.しかしそれを組み合わせるリンクが出来ない. これだけしか手がかりは無いのですが,使用しているソフトが分からない現状では,新たにソフトを購入するしかないと考えております.よろしくお願い致します.

  • FortranからCの関数を呼ぶ方法

    お世話になります。 標記件、以下の通り行っていますがうまくいきません。どなたかご存知の方おりましたらご教示下さい。よろしくお願いします。 (1)環境 ・Windows XP SP2 ・Compaq Visual Fortran Professional Edition 6.5.0 ・Visual C++ 6.0 Enterprise Edition (2)作業方法 ・Visual C++ を立ち上げ、その中でCプログラムとFortranプログラムのファイルを作成し、作業。 (3)現象 ・ビルドしようとすると以下のエラーが発生し、EXEが作成されない。 ------------------------------- Linking... LINK : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library test01.obj : error LNK2001: unresolved external symbol _TEST@0 Debug/system.exe : fatal error LNK1120: 1 unresolved externals -------------------------------  ・個々のファイルのコンパイルは問題なし。 (4)ソース内容  --- Fortranプログラム"test01.f90" --- PROGRAM FileRW call test END  --- Cプログラム"system.cpp" --- #include <stdio.h> void test_(void) { printf("TEST PROGRAM!!"); } 以上

  • C++コンパイル時ファイル名文字化け D4024

    開発環境 visual studio 2013 ソースコード // ConsoleApplication2.cpp : Defines the entry point for the console application. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; } コンパイル結果 1>------ Build started: Project: ConsoleApplication2, Configuration: Debug Win32 ------ 1> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86 1> Copyright (C) Microsoft Corp 1984-1998. All rights reserved. 1> 1> cl / 1> 1>CL : Command line warning D4024: unrecognized source file type '/', object file assumed 1> Microsoft (R) Incremental Linker Version 12.00.21005.1 1> Copyright (C) Microsoft Corporation. All rights reserved. 1> 1> /out:.exe 1>LINK : warning LNK4001: no object files specified; libraries used 1>LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 1>LINK : fatal error LNK1561: entry point must be defined ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== エラーリスト Warning 1 warning D4024: unrecognized source file type '/', object file assumed Warning 2 warning LNK4001: no object files specified; libraries used Warning 3 warning LNK4068: /MACHINE not specified; defaulting to X86 Error 4 error LNK1561: entry point must be defined 自分で何時間リサーチしてみて、収穫なし、解決できず ファイル名、ファイルアドレスは全部半角英文字、スペースなし セーブ時の文字コードをunicodeにしても治らず ギブアップです、もし解決策がわかる方がいらっしゃるならぜひお願いいたします! どうしても治らなかったらVS2013を再インストールしてみるつもりです それでもだめならeclipseにもどります

  • C++コンパイルエラーの原因を教えてください

    Cには詳しいのですが、C++があまりよくわかっておらず、質問させてください。 今回、手に入れたC++のあるプログラムをmakeしています(x86_64 Linux)。 以下のようなエラーが出てコンパイルできないのですが、何が悪いのか全く理解できず困っています。 他の環境ではコンパイルできているらしいので、わたしの環境の何が悪いのか、考えられることがありましたら、何でも書き込んでいただけると嬉しいです。 よろしくお願いします。 g++ -c -I../MathUtils -I../CommonUtils -DHAVE_ZLIB -DHAVE_BZLIB -fomit-frame-pointer -O2 -DFTYPE=float -Wall -Wsign-compare -Wpointer-arith -pedantic -DHAVE_PGPLOT -I. -DHAVE_FFTW -o analyse_image.o analyse_image.cpp In file included from analyse_image.cpp:21: Tools.h:16:15: warning: anonymous variadic macros were introduced in C99 analyse_image.cpp: In function ‘int main(int, char**)’: analyse_image.cpp:114: error: ‘strcmp’ was not declared in this scope analyse_image.cpp:205: error: ‘exit’ was not declared in this scope analyse_image.cpp:209: error: ‘strstr’ was not declared in this scope analyse_image.cpp:216: error: ‘exit’ was not declared in this scope analyse_image.cpp:457: error: ‘strlen’ was not declared in this scope make: *** [analyse_image.o] Error 1