fortranプログラムをRedHat7.1でコンパイルする方法

このQ&Aのポイント
  • Webからダウンロードしたfortranプログラム(contour3d)をRedHat7.1でコンパイルする方法を知りたい。
  • ダウンロードしたプログラムを解凍するとMakefileとfortranファイル(contour3d.f, matrix.f, cell.f, subr.f)が出てきた。
  • Makefileの内容を確認すると、g77コマンドを使用してコンパイルしていることがわかった。
回答を見る
  • ベストアンサー

fortranプログラムのコンパイルの仕方

Webからダウンロードした、fortranで書かれたプログラム(contour3dという名前)をRedHat7.1にてコンパイルしようとしています。 詳しいやり方が書いていないので困っています。 ダウンロードしたものを解凍したら5つファイルが出て来ました。 Makefile, contour3d.f, matrix.f, cell.f, subr.f そのうちMakefileの内容は以下のとおりです。 FC=g77 -Wall all: contour3d contour3d: contour3d.o matrix.o cell.o subr.o $(FC) -o $@ contour3d.o matrix.o cell.o subr.o clean: /bin/rm -f *.o *~ 適当に、 g77 -Wall contou3d.f matrix.f cell.f subr.f とやったらa.outが出来ましたが、これであっているのでしょうか?

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

  • ベストアンサー
  • secretd
  • ベストアンサー率39% (50/126)
回答No.1

fortranはよく知らないのですが,Makefileがあるのなら, "make"というコマンドをたたいてやると, そのMakefileというファイルの内容を読み込んで,自動的にコンパイルをしてくれています. ちなみに,そのMakefileがやりたいコンパイルの内容は, 質問者さんのたたいたコマンドのとおりですので, それで合っていると思います.

tencho2005
質問者

お礼

非常に助かりました。ありがとうございました。

関連するQ&A

  • SolarisのプログラムをWindows環境でコンパイル

    Solaris環境でコンパイルを指定された、c言語で書かれたプログラムを Windows環境でコンパイル・実行するにはどうしたらよろしいでしょうか? 仮想マシン以外でありましたらよろしくお願いします。 makefile CC = gcc -g all: s s : s.o t.o s.o : s.c t.h t.o : t.c t.h clean: -rm s *.o out? core*

  • fortranのプログラムで困っています。

    implicit real*8(a-h,o-z) dimension h(10,300) h(1,g)=1.0d0 h(2,g)=g*2.0d0 open(6, file='testes-ex.f', status='replace') do 12 n=1,2 do 11 i=1,2 g=2.0d0*i 11 write(6,*) h(n,g) 12 write(6,*) stop end として出力させると値がすべて0になってしまいます。 私としては1.0 2.0  1.0 4.0 と出力させたいのですが、 どこに問題があるのでしょうか? 当方fortran初心者ですのですごく馬鹿げた質問をしているかも しれませんが…気付くことがあればご指摘よろしくお願いします。

  • C++からfortran77を呼び出す

    はじめまして。質問させて下さい。 私はfortran77で書かれたパッケージで使用されてる関数を、C++から呼び出して使えるコードを書いています。 けど、コンパイルがうまく通りません。 f77 -c -o main.o main.f f77 -c -o sub.o sub.f g++ -c Jikkou.cxx g++ main.o sub.o Jikkou.o -lg2c するとここで、以下のようなエラーを吐いちゃいます。 main.o: In function `main_': main.f:(.text+0x12c): undefined reference to `ran_' main.fとsub.fは、fortran77で書かれてるmainプログラムとサブルーチンです。 main.fの中で、乱数を出す為にRAN()を使ってるんですが、g++はこの関数が分からないようです。 どうにかg++にRAN()を分からせるいい方法はありませんか?

  • intel fortran cimpilerでプログラムファイルがコンパイルできない

    こんにちは。 当方プログラムに関しては全くの初心者です。 研究で早急に計算プログラムを使用したく、 現在intel fortran cimpiler8.0を使い、とあるソースファイルをコンパイルしたいのですがうまくいきません。 コンパイルの手順としてあっているのか自信がないのですが、 とりあえずやってみて、以下のようにエラーが出ます。 $ source /opt/intel_fc_80/bin/ifortvars.csh bash: /opt/intel_fc_80/bin/ifortvars.csh: line 28: syntax error: unexpected end of file $ ifort /home/ディレクトリのパス/ファイル名.f90 ifort: error: could not find directory in which g++ resides これはどういうことなのでしょうか?? どなたかご教授お願いいたします。 ちなみに、使用しているOSはlinuxのFedora.core1です。

  • MPIを用いたFortranプログラムのコンパイル エラー

    前回(http://okwave.jp/kotaeru.php3?q=2361804)に続いてエラーで困っています。 バンド構造などをシミュレーションできるソフトPHASE ver. 4.00を下のサイトからダウンロードし、makeしようとしたのですが出来ません。 http://www.fsis.iis.u-tokyo.ac.jp/result/software/? OS Fedora Core 5 Linux Fortranコンパイラ intel Fortran Compiler 9.0 for Linux Cコンパイラ gcc MPI mpich-1.2.7 PHASEはMPIを使ったFortranのプログラムで、オブジェクトファイルは作られたのですが、最後のリンクのところで下のようなエラーが出てしまいます。 /opt/intel/fc/9.0/lib/libifcore.a(for_open_proc.o): In function `for__compute_filename.':./src/libfor/for_open_proc.c:(.text+0xc14): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /opt/intel/mpich/lib/libmpich.a(p4_secure.o): In function `start_slave':p4_secure.c:(.text+0x80): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking この後に次のような/usr/lib/libc.a ... undefined reference to ...という形のエラーが43行あります。 /usr/lib/libc.a(iofclose.o):(.eh_frame+0x121): undefined reference to `__gcc_personality_v0' /usr/lib/libc.a(iofflush.o): In function `fflush': undefined reference to `_Unwind_Resume' どうやらglibcが関係しているような気がするのですが、自分ではどうすればよいのか分かりません。 エラーの意味とその対処法をお願いします。

  • makefileの書き方

    makefileを書いたのですが、コンパイルしたあとに、main.cppの内容を変更してから、またmakeってタイプして変更した箇所が反映されません。どこがおかしいでしょうか?よろしくお願いします。 program : main.o g++ -o program main.o main.o : main.cpp g++ -Wall -c main.cpp DeleteObj: rm main.o

  • ライブラリ使用Fortranプログラムのコンパイル

    ライブラリを用いたFortranプログラムのコンパイルについて。 以前作製した簡単な高速フーリエ変換のテストプログラムを G95を使用してCygwinでコンパイルしようとしたのですが、 以下のようなエラーが表示されてコンパイルできません。 以前使用していたPCや他のPCでは問題なくコンパイルと 実行ができ、このエラーが出るのは今私が使っているPCのみです。 (これまで試したPCは全てwin7) 原因が分かる方がいらっしゃいましたらご教授願います。 =================================================== $ g95 1.f90 -L. -lfftw -lrfftw ./libfftw.a(fftwnd.o):fftwnd.c:(.text+0x704): `__getreent' に対する定義されてい ない参照です ./libfftw.a(putils.o):putils.c:(.text+0xc0a): `__getreent' に対する定義されてい ない参照です ./libfftw.a(malloc.o):malloc.c:(.text+0x42): `__getreent' に対する定義されていな い参照です ./libfftw.a(malloc.o):malloc.c:(.text+0x52): `__getreent' に対する定義されていな い参照です ./libfftw.a(malloc.o):malloc.c:(.text+0xcf): `__getreent' に対する定義されていな い参照です ./libfftw.a(malloc.o):malloc.c:(.text+0xdf): `__getreent' に対する定義されていな い参照がさらに続いています ./libfftw.a(wisdom.o):wisdom.c:(.text+0x626): `_imp___ctype_' に対する定義されて いない参照です ./libfftw.a(wisdom.o):wisdom.c:(.text+0x664): `_imp___ctype_' に対する定義されて いない参照です ./libfftw.a(wisdom.o):wisdom.c:(.text+0x6bc): `_imp___ctype_' に対する定義されて いない参照です ./libfftw.a(wisdom.o):wisdom.c:(.text+0x704): `_imp___ctype_' に対する定義されて いない参照です ./libfftw.a(wisdom.o):wisdom.c:(.text+0x75c): `_imp___ctype_' に対する定義されて いない参照です ./libfftw.a(wisdom.o):wisdom.c:(.text+0x780): `_imp___ctype_' に対する定義されて いない参照がさらに続いています

  • C++の関数をfortranから呼びたい。(g++, g77)

    C++の関数をfortranから呼びたい。(g++, g77) いつもお世話になっています。 現在WindowsXPにMinGWというソフトを入れて C++のコンパイルはg++を Fortranのコンパイルはg77を 使用しています。 (いずれも動作は確認できています。) 現在、以下のようなソースを使用して fortranからC++関数を呼ぼうとしていますが できておりません。 ソース内容、コンパイル方法に問題があれば ご指摘頂きたくお願いします。 ■C++ソース #include <stdio.h> #include <iostream> extern "C" void funcHelloC_(); void funcHelloC_(void) { printf("hello C world!\n"); } ■fortranソース    write(*,*) "Hello Fortran World."    call funcHelloC()    end ※実際のソースの各文先頭には、半角スペース6つ分が  記述しています。 ■コンパイル手順 D:\C>g++ -c funcHelloC.cpp D:\C>g77 -c helloFortran.f D:\C>g77 helloFortran.o funcHelloC.o helloFortran.o(.text+0x51):helloFortran.f: undefined reference to `funchelloc_' funcHelloC.o(.text+0xd):funcHelloC.cpp: undefined reference to `_ZNKSs4sizeEv' funcHelloC.o(.text+0x60):funcHelloC.cpp: undefined reference to `_ZNKSsixEj' funcHelloC.o(.text+0x9e):funcHelloC.cpp: undefined reference to `_ZNKSsixEj' funcHelloC.o(.text+0xcc):funcHelloC.cpp: undefined reference to `_ZNKSsixEj' funcHelloC.o(.text+0x12f):funcHelloC.cpp: undefined reference to `_ZNSt8ios_base4InitC1Ev' funcHelloC.o(.text+0x14a):funcHelloC.cpp: undefined reference to `_ZNSt8ios_base4InitD1Ev'

  • C++の関数をfortranから呼びたい。(intelFortran,

    C++の関数をfortranから呼びたい。(intelFortran, g++) いつもお世話になっています。 現在WindowsXP上で、MinGWのC++コンパイラのg++と intelFortranのifortコマンドを使用して、 fortranからc++関数を呼ぼうとしていますが リンクできません。 ソースは以下で紹介したものをそのまま使用しています。 http://okwave.jp/qa/q5806443.html 手順は、 D:\C>ifort -c helloFortran.f D:\C>g++ -c funcHelloC.cpp D:\C>ifort helloFortran.obj funcHelloC.o 結果は、 error LNK2019: 未解決の外部シンボル*****が関数**** で参照されました。 と数行出力されています。 お手数ですが、よろしくお願いします。

  • Makefileについて

    makeファイルの書き方で悩んでいます。 makeファイルは書いたことがなく、ほとんど丸写しです。 私がしたいのは、 (1)run:部分で削除するファイルがなかった場合、エラーとなり次の行へ進みません。なくても(エラーでも/エラー回避して)次の行へ進む方法が知りたいです。 もうひとつは(2)run:部分で、cleanを実行し、makeしてrunを実行させる方法が知りたいです。 --------------以下、サンプルMakefileです。 CC = gcc OBJS = main.o sub.o PROG = test.exe .c.o: $(CC) -c $< -o $@ $(PROG) : $(OBJS) $(CC) $(OBJS) -o $(PROG) $(OBJS) : Makefile clean: rm -f *.o $(PROG) run: rm *.log <---- (1)ここでファイルがないとエラーで止まる $(PROG) all:   <-- (2)[clean]を実行して、makeして、[run]を実行させたい 以上です。