• ベストアンサー

fortran77について

salfordのfortran77コンパイラ&リンカについておしえてください コンパイラ&リンカのプログラムと同じディレクトリにソースプログラムを入れないとリンカしてくれないのはなぜなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

色々調べてみましたが、 ・コンパイラおよびリンカの置かれているディレクトリに空白が含まれてはいけない (c:\prpgram fiiles\fortran なんかは×) ・コンパイルするファイルが置かれているディレクトリに空白が含まれていてはいけない   (c:\documents and settings\program\fortran なんかは×) という条件があり、 さらに、 ・環境変数 PATH に含まれているパスの中に、空白を含んだ名前の Fortranコンパイラの存在するディレクトリがあってはいけない という条件があるようです。たとえフルパスでリンカを起動 (c:\win32apps\salfold\slink hello.objのように)したとしても、 環境変数PATHに含まれるディレクトリのかなかに slink.exe が 存在するディレクトリがあり、かつ、その名前に空白が含まれていると エラーになるようです。 したがって、 1. ftn77.exeやslinik.exeを空白を含まない名前の場所に置く 2. コンパイル対象の.forファイルも空白を含まない名前の場所に置く 3. 1.でコンパイラとリンカを置いたディレクトリをPATHに登録し、 空白を含んだ名前の方は削除する という対処でいけるのではないでしょうか?

hirohiro8888
質問者

お礼

お調べくださり大変感謝しております. すっきりしてよかったです。ありがとうございました、 今後ともよろしくお願いします。

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

確認しました。 コンパイル対象の.objファイルが、名前に空白を含むディレクトリの下に あるとリンカがエラーを起こすようです。 c:\data\prog\fortran のように空白を含まないディレクトリにファイルを 置くようにすれば解決できると思います。

hirohiro8888
質問者

補足

ご回答ありがとうございます、、 空白をあげずcドライブの下にfortranというフォルダを作ってやってみたのですが(c:\fortran) 前回と同じエラーが出ました。 何度も申し訳ございません。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

http://www.salfordsoftware.co.uk/software/downloads/compilers.html にある ftn77 ですよね? デフォルトの c:\win32app\salford にインストールして、pathに登録し 適当なファイル(hello.for)を作って ftn77 hello.for slink hello.obj としてみましたが(もちろんコンパイラがあるのとは別のドライブ、ディレクトリです)、 何のエラーもなく hello.exe が生成されましたよ? 何かメッセージは出ませんでしたか?

hirohiro8888
質問者

補足

回答ありがとうございます、 私の場合はprogram filesの下にインストールしました。 以下のようにコマンドプロンプトに入力 カレントディレクトリを cd c:\Documents and settings\Owner\My Documents\Fortran としてftn77 test6.forと打てばカレントディレクトリにtest6.objが作成され、その後にslink test6.objと打ったら***Could not open: C:\program.objと表示されます。 ぐぐってみたところ http://pc8.2ch.net/test/read.cgi/tech/1138063703/ 上記の掲示板に私と同じような疑問を持った人がいました。 内容は 676 :デフォルトの名無しさん :2006/07/16(日) 21:55:10 ファイルを読み込んだり作ったりするとき、 実行ファイルと同じディレクトリの中に 別のディレクトリを作って保存したりするにはどうしたら良いでしょうか。 677 :デフォルトの名無しさん :2006/07/16(日) 22:07:35 >>676 既出の質問だが・・・・お答えしよう。 FORTRANの標準命令ではできない。 コンパイラメーカー固有の拡張命令でシステムの関数を呼び出すものがあるだろうから それらを通じてやるしかない。マニュアルの後ろのほうの章を探して味噌。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

お使いのFortranコンパイラのインストーラはPATH環境変数への登録をしてくれないようです。 このため、コンパイラやリンカが存在しているディレクトリで作業するか、 フルパスで指定するかしないと別ディレクトリでコンパイル&リンクすることはできません。 お使いのOS(Windowsだったと思いますが)によって微妙に登録の仕方が 違うのでここでは省略します。 あるいは、コマンドプロンプト(DOSプロンプト)を開いたあとで path=%path%;c:\win32apps\salfor; のように実際にコンパイラがあるディレクトリを登録してやる ことも可能です。

hirohiro8888
質問者

補足

回答ありがとうございます、 ユーザ環境変数のpathへは登録されてました、ができません。 コンパイルは別のディレクトリに保存していてもコンパイルはできるのですがリンクは別のディレクトリに保存しますとできないのが現状です。(コンパイラもリンカも同じディレクトリにありpathに登録されてます。)