• ベストアンサー

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に登録されてます。)

関連するQ&A

  • 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のコンパイラでコンパイルできるようにアドバイスを下さい よろしくお願いします

  • MacでFortranプログラミングをするには・・・

    当方、Windowsユーザーですが、最近、単なる興味本位でMacに買い換えようと考えています。 通常、WindowsでFortranのプログラミングを行う際は、visial fortranのようなコンパイラで、コンパイルして実行する訳ですが、Macの場合もコンパイラを使うのですか? また、いろいろ複数のソースファイルを結合させて一つの実行ファイルを作る際、リンカーを使って一つの実行ファイルを作るわけですが、そういうこともできますか?

  • fortran95を.visual studioで扱えると聞いたのですが…

    .netがインストールされている場合に、 フォートラン95のコンパイラであるsalfordのFTN95をインストールするとvisual studioでfortranのプロジェクトも扱えると聞いたのですが、できません。 理由や解決方法が分かる方がいましたらお願いします。 ちなみにvisual studio 2008 express editionを使っています。

  • Fortranのバージョンアップと古いソースコード

    Fortranは科学技術計算の古い資産が使えるということでまだ使われていると思います。 しかも、コンパイラ・リンカは製品としてバージョンアップしているわけですが、新しくなっても古いコードはコンパイル・リンク・実行できると思っていました。最近、intel fortranの更新をしたのですが、動作がかなり違ってきました。F77,F90,F95などの更新ではなく、intel社の製品としての最新版への更新です。コンパイル・リンクまでは行くのですが、実行させたとたん、ゼロ割のようなメッセージが出て、実行が打ち切られてしまいます。1時間ぐらい走るプログラムなのですが、1秒で打ち切りでした。必ずそうなるということではありません。特定のライブラリで生じます。そのライブラリは古い(言語としてはF77)ので当然ながら新しいコンパイラで動くなどと書いていません。ただソースコードの塊であり、古いコンパイラでは動いていたのです。古いと行っても2009年ぐらいに買ったintel visual fortran ver.11ぐらいのもので2016年のコンパイラと大幅な変更はないはずなのですが。例えば最新版(2016年2月時点)の方は並列関係の設定の方がデフォルトで並列計算しない設定をコンパイラオプションで指定しないとおかしくなるということでしょうか(たぶんGPUには対応していないと思いますが)。どっかに書いてあるかなと思案していますが。 何か心当たりがあればよろしくお願いします。

  • g77(fortran77)でのエラー

    http://www.eq.db.shibaura-it.ac.jp/fortran/ex.html#install  このサイトの通りに従い、g77コンパイラをインストールして、fortran77のソースをコンパイルしようとしたのですが、 “g77: installation problem, cannot exec 'f771': No such file or directory” というメッセージが出てうまくできません。なぜなのか、どうすればうまくいくのか、ご教授をお願い致します。  Windows Vista sp2です。

  • Fortranを学校と家で両方使うには?

    これから課題でFortranを使ってプログラムしなくてはなりません。Fortranが全くわからず時間もないので学校でプログラムした続きを自宅のパソコンでもしたいと思うのですが、学校で使っているツールと違っても大丈夫なのでしょうか? 過去の質問と回答からFTN77 Personal EditionやCPad for Salford FTN77などがフリーのツールだということは分かったのですが…。 大変初歩的な質問ですが、教えて頂けたらとても助かります。よろしくお願いします。

  • MS-FortranとFortran90

    私は研究でFortran90を使っているのですが、研究に使うプログラムはMS-Fortranを用いて書かれているものでした。 そこで質問なんですが、MS-FortranとFortran90の違いについて知っている方がいれば教えてください。 また、MS-FortranでかかれたソースコードをFortranにコピーした時に何か弊害はあるのでしょうか?(人づてに弊害が起こると聞いたことがあるのですが・・・)。 プログラミングを本格的に始めて、まだ3ヶ月ほどで用語の使い方がわかりにくいところがあるかもしれませんがよろしくお願いします。

  • FORTRANのフリーソフトFTN77?FTN95?

    FORTRANのフリーソフトFTN77?FTN95? こんにちは、理系大学3年生のものです。 夏休みの課題として、指導教授からFORTRANを学習するように言われました。 先生にはFTN Personal Edition 77をコンパイラとしてダウンロードしなさいと言われました。 宿題として出された参考書のタイトルにもFORTRAN77と書いてあります。 しかし、調べてみてもFTN77のダウンロード先が見当たりません。 どうやら、Salford FTN77の後継バージョンがSilverSoftからFTN95という名前になったらしいのですが、つまり、FTN77はもうダウンロードできないってことなんですか? FTN95をダウンロードしてコンパイラとして使用したら、バージョンが違うから、FORTRAN77の参考書では不都合が起きますか? できるなら参考書通りFTN77をダウンロードしたいと思っているのですが、できますかね? それとも最新のFTN95をダウンロードするべきですか? 回答お願いします。

  • FORTRAN 複素数 (実部を取り出す方法)

    fortran77で複素数の実部を取り出したいのですが、 関数が存在するかわかりません。どなたか、ご存知の方、 教えてください。虚部は出せました。 FORTRAN77(SALFORD FTN77)を使っています。 確か、fortran90なら real(○+□i)だったと思います。

  • Fortran90を使いたい

    Fortran90をタダで使うことは出来るのでしょうか。 コンパイラは以下のサイトで手に入れることが出来るようなのですが http://www.download.com/Silverfrost-FTN95/3000-2069_4-10491439.html?tag=lst-1 このコンパイラは特定のソフトがないと使えないのでしょうか。 また,他にコンパイラがあるのでしょうか。

専門家に質問してみよう