プロが教えるわが家の防犯対策術!

いまFortranでプログラミングを勉強しています.g95というフリーソフトを使っているのですが,「ld:cannot open output file a.exe:permission denied」というようなエラーが出ます.
でも,ソースファイルを別のディレクトリに移すとエラーは出なくなりました.また,再起動するとエラーが出ていたディレクトリでも実行ができました.どういうことなのでしょうか?

A 回答 (2件)

a.exeってことは、WIndows上でCygwinかMinGWか、ってことでしょうか。


エラーが出たとき、a.exeを実行中だったりしませんでしたか?

g95はソースをコンパイルして最終的に実行ファイルにします。そのためには、ソースファイルから作られた以外にも、いろんなライブラリ等も必要です。
この、いろんなファイルをまとめるのをリンクといい、それを行うプログラムをリンカと言います。
メッセージにある ld は、そのリンカです。それがa.exeに出力できなかった、というエラーです。

permissin denied は、書き込み許可がない、ということですが、これには次の理由が考えられます
1)ファイルへの書き込み権限がなかった
2)そのファイルが使用中でロックがかかっていた

1)については、再起動だけでエラーが出なくなったことを考えれば、今回はあてはまらないと思います。(でも、ファイルの権限については勉強しておいてください)

なので、おそらく2)でしょう。
Windowsでファイルを削除しようとして「使用中の項目を含むため云々」と言われたことがあるかと思います。あの状態です。
・別ウィンドウで実行中だった
・途中で止めたつもりが止ってなかった(Ctrl-Cで止めたつもりでCtrl-Zでバックグラウンドになってた)
・ウイルスソフトがスキャン中だった
など、要因は考えられますが、今となってはわかりません。
    • good
    • 0
この回答へのお礼

自分の勉強不足ですね.ありがとうございました.

お礼日時:2010/01/10 00:08

そのディレクトリに書き込み権限がないのです。


そういう基本的なことは本でも買って勉強してください。
    • good
    • 0
この回答へのお礼

わかりました.ありがとうございます.

お礼日時:2010/01/10 00:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!