• ベストアンサー

fortran:includeできないとエラーがでます

unix上にtelnetしてプログラムをつくっているのですが、fortranのプログラム中でinclude文を実行するとコンパイル時に Cannot open include file ’ヘッダーファイル名’ と出ます。 読み込むヘッダーファイルは市販のものをインストールしたものでこのファイルは/usr/includeにシンボリックリンクの形で存在しリンク先も存在します。ちなみにヘッダーファイル名を実在しないものにしても同じエラーメッセージが出ます。 なにが原因なのでしょうか。お心当たりのある方はよろしくお願いいたします。

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

  • ベストアンサー
  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.3

>参照しているシンボリックリンクはじつは/usr/includeの1つ下のサブディレクトリにありました。しかし、No.1のパで/usr/include/'sub directry名' と指定してもエラーメッセージが/usr/include/「ヘッダーファイル」のままなので下にあればどこでもいいようですね。 うーん、フォートランのコンパイラによって違うんですが、Cannot openということはオープン出来ないと言う意味ですのでそれは尾あーミッションの問題なのかそこにファイルがないからなのかによります。 プログラム内のINCLUDE分の所にサブディレクトリを記述してやってもだめなんでしょうか?

toro2000
質問者

お礼

どうもありがとうございました。 どうやら教えていただいた方法で読み込んでいるようです。実は、プログラム内に /usr/include/ファイル名 と書くところまではやっていたのですが、教えていただいたのは試してませんでした。 どうも大変お世話になりました。

その他の回答 (2)

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.2

>Cannot open include file '/usr/include/ヘッダーファイル名’ >に変わりました。何が問題なんでしょうか。 インクルードしたいファイルのパーミッションは大丈夫でしょうか? chmod 775 /usr/include/ヘッダーファイル名 で、どうでしょう

toro2000
質問者

お礼

たびたびすみません。ありがとうございます。 すみませんが、参照しているシンボリックリンクはじつは/usr/includeの1つ下のサブディレクトリにありました。しかし、No.1のパで/usr/include/'sub directry名' と指定してもエラーメッセージが/usr/include/「ヘッダーファイル」のままなので下にあればどこでもいいようですね。 /usr/include内のはシンボリックリンクは lrwxrwxrwx です。参照されている本体は -rw-r--r-- なのですが、こういう場合どうなのでしょう。(ヘッダーファイルは実行されるものなんですか?それとも読み込むものでしょうか?)chmodはsu権限を持っていないので実行できないようです。

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

コンパイルオプションで -I path : /usr/include/ を付けてもダメでしょうか?

toro2000
質問者

お礼

お返事ありがとうございました。 教えていただいたのを試してみたんですが、エラーが Cannot open include file '/usr/include/ヘッダーファイル名’ に変わりました。何が問題なんでしょうか。 もし、お心当たりありましたらまたお願いします。

関連するQ&A

  • Fortranについて,fatal error LNK1181

    Fortranをインストールしてプログラムをコンパイルしようとすると,以下のエラーが出ます. LINK : fatal error LNK1181: cannot open input file "C:\DOCUME~1\dfor.lib" 正常に作動させるにはどうしたらいいでしょうか.何か足らないものがあるのでしょうか.以下のフォルダに, インストールCDに入っているLIBファイルをすべてコピペしてみたのですが,変わりなしです. C:\Program Files\Microsoft Visual Studio\DF98\LIB OSはXP,今回インストールをしたFortran及びプログラム作成をしたFortranは,共にVisual Fortran 6.0です.何か打開策があれば助言お願いします.

  • FORTRANとC++の連動について

    私は,Fortranを用いて解析の業務をしている,プログラム初心者です。 購入したのは,Intel Visual Fortran8.0(VF)ですが,Windows環境でコンパイルリンクするには,Microsoft Visual C++ .NET 2003(VC++)が必要ということで,こちらも購入しました。 普段は,Fortranのコンソールで ifort **.f といったコマンドでコンパイルリンクし,実行しているだけです。 これからは,VC++の方に移行していきたいと考えていますが,しばらくはFortranで作成したサブルーチンを有効活用したと考えています。 そこで,VC++ベースのメインプログラムからFortranのサブルーチンを呼び出すプログラムの作成方法,コンパイルリンク方法をご教授ください。よろしくお願いします。 (1)ソースにどう記述するか? void CMyDlg::OnBnClickedOk() { ここで,FORTRANのサブルーチンを呼び出したい。     Fortranなら call subroutine( a, b ) } (2)コンパイルするときは, Visual Studio開発環境で,コンパイル→実行で良いのか? それとも,あらかじめVC++とVFで.objファイルを作成する必要があるのか?

  • Linux C言語開発 インクルードについて

    C言語開発初心者です。 LinuxでC言語開発をするにあたり、どのディストリビューションにしても インクルードしたいヘッダファイルが既定の場所には無く別の場所にカーネルのバージョンごとに保存されているようなのです。 このままコンパイルを試みるとインクルードファイルが存在しませんとエラーが返ります。 既定のヘッダファイルの保存場所にはC言語開発に必要なヘッダファイルが存在しませんので、この問題を皆さんはどのように解決しておりますか?どなたかご教授お願いいたします。 C言語でincludeする場所は<>でくくった場合 /usr/include/ 以下を参照する設定になっていると思うのですが、 例えばmodule.h やinit.h などの開発用ヘッダファイル?を探してみると /usr/include/linux/ には存在せず、 find / -name module.h と入力して検索してみると /usr/src/kernels/2.6.32-131.21.1.el6.i686/include/linux/module.h と別な場所にあります。 ネットであれやこれや調べてみても コンパイル時にincludeの参照先を指定する方法はあるようなのですが、 コンパイルする度にいちいち指定するのは面倒だと思います。(gcc -I) かといって開発しているカレントディレクトリにヘッダファイルをコピーしても includeするヘッダファイルが別のヘッダファイルを参照することもあるようなので、 あまり現実的ではないようです。 一番安全な方法としてincludeする参照先が環境変数か何かで追加及び変更するのではないかと思います。 試してみましたがenvコマンドで表示されるOSの環境変数とは別のもののようなのです。 環境変数 C_INCLUDE_PATH とはどのようにして変更・追加するのでしょう? また、上記の方法以外で良い方法がございましたらそれでもかまいません。 よろしくお願いいたします。 開発環境 ・OS centos6 ・以下のパッケージはインストール済み kernel-headers-2.6.32-131.21.1.el6.i686 kernel-devel-2.6.32-131.21.1.el6.i686 make-3.81-19.el6.i686 gcc-4.4.5-6.el6.i686 ・GUI開発環境 netbeans ・uname -r 実行結果 2.6.32-131.21.1.el6.i686

  • コンパイルエラー「include ファイルを開けません」

    あるプログラムをコンパイルしたところ、 下記コンパイルエラーが発生しました。 ヘッダファイルが開けないようなのですが、 これは自分の開発環境に必要なファイルが足りないのでしょうか? 解決する方法が分からないので、ご存知の方おられましたら ご教示お願い致します。 環境はVC++2005でフルインストールしています。 fatal error C1083: include ファイルを開けません。'WtsApi32.h': No such file or directory

  • linuxの/usr/includeについて

    (1)gccは、オプションを指定しないで、/usr/include以外のヘッダーファイルを見に行きますか? (2)/usr/includeの中はディストリビューションによって異なりますか? (3)/usr/includeはアプリケーションなどをインストールしたりして、増えたりするものなんでしょうか?

  • 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です。

  • WIndowsでのFortranプログラムのエラー

    Fortranで作られたらしいプログラムをドス窓で実行させた時に「Cannot Open File "F90.EER" #・・」のようなエラーメッセージが出てしまいプログラムが止まります。 これはどういう意味でどうすればよろしいのでしょうか?

  • ヘッダのinclude順

    ヘッダにヘッダをincludeせず include順でカバーする場合と、 必要なヘッダはヘッダにincludeする という方法があると思いますが この違いはなんでしょうか? 上記の方法でも結局ヘッダの変更で影響のあるcppファイルは コンパイルする必要があるのでどちらも同じ気がするのですが 何か違い、あるいは推奨する理由はありますか?

  • visual fortranのコンパイル時のエラー

    visual fortranでコンパイルをすると最後に LINK : fatal error LNK1181: cannot open input file "C:\DOCUME~1\dfor.lib" というエラーが出てしまいます。 ちなみにOSはXPProで、普段使ってるユーザーアカウントではなく Administratorでログインすると問題なく使えます。 インストールが普段のユーザーアカウントではできず、 administratorでしたことが影響しているのでしょうか。 dfor.libですが友達のPCにも入っていませんでした。 どなたか教えてください。

  • 「utime.h が見つからない」エラーにはどう対処? Boland C v5.5無料版 on win2000 DOS窓

    ある上手な人が書いた、Cソース一式があります。便利なCソースなので手を加えてコンパイル・リンクしたいです。内容はある科学dataの変換プログラムです。*.cファイルが15個ぐらい、*.hが4個ぐらい。全体でざっくり1000行ほどあります。 手元に、無料版Borland C v5.5 があります。Windows2000で、コンパイル・リンクをWindows2000のDOS窓で、試みました。が、「utime.h が見つからない」エラーになります。他のincludeファイルはうまく取り込まれています。事実、*.hファイルがある include/sys を見てみると、確かに、include/sys/utime.h は存在しません。(time.hなど4つのファイルが存在していましたが)。。。 こういう場合、どうしたら良いでしょうか?研究室のどこかに転がっているUNIXマシンから、include/sys/utime.h をコピーしてきて、windows2000の中で、上記Borland C v5.5 のinstallされたdirのinclude/sysに、さりげなく、copyしておけば、その後、コンパイルリンクはOKになるという、そういう簡単な話なのでしょうか? それともこのcopyは何か問題がありそうでしょうか。それともぜんぜん検討違いでしょうか。 どこかに転がっているUNIXマシンの前に座りなおして、そこで開発するというのはできれば避けたいです。 どうかよろしくお願い致します。

専門家に質問してみよう