アットウィキロゴ

gfortran


gfortran をとりあえずhpc.sourceforge.net から入れていたが、最近MacOSX用にパッケージ化してくれたヒトがいるらしい。しかしいれてみると gfortran -O2 -fno-range-check -c fftsg.f dyld: Library not loaded: /usr/lib/libiconv.2.dylib Referenced from: /usr/local/bin/gfortran Reason: Incompatible library version: gfortran requires version 7.0.0 or later, but libiconv.2.dylib provides version 5.0.0 というエラーが出て止まるようになった。これはいかん。とりあえずlibiconv.2.dylib で検索をかけてみると、


というページが出てきた。これを見て最新版をインストールする。ついでに

$ export DYLD_LIBRARY_PATH="/usr/local/lib" 
 
を入れて新しい版を認識するようにしてみたが、今度は

gfortran -O2 -fno-range-check -c fftsg.f make[1]: *** [fftsg.o] Bus error make: *** [double] Error 2 が出て止まる。元に戻す。
 


ifort install


intelでもfortranを出している。


これが Intel Mac だと最適化して非常に早くなるという噂を聞いたので、評価版をダウンロードして入れてみる。これはインストーラが付属していて特に問題なし。とりあえずMakefile でコンパイラをifortに変えると

fortcom: Error: fortmain.f, line 32: Syntax error, found END-OF-STATEMENT when expecting one of: = .EQV. .NEQV. .XOR. .OR. .AND. .LT. < .LE. <= .EQ. == .NE. /= .GT. > ...
        dimension u(imax,jmax), v(imax,jmax), eig_u(imax,jmax), eig_v(imax,jmax)
--------------------------------------------------------------------------------^
compilation aborted for fortmain.f (code 1)
make: *** [fortmain.o] Error 1
 

というエラーが出て止まる。
ためしに、

gfortran fortmain.f

をかけてみると、

fortmain.f:32.72:
 
       dimension u(imax,jmax), v(imax,jmax), eig_u(imax,jmax), eig_v(ima
                                                                       1
Error: Expected another dimension in array declaration at (1)
 

が出て止まる。ほぼ同じ場所で止まっているようだ。ということは、Makefile に入っている-ffixed-line-length-noneが効いているようだ。Fortran の文法の問題か?代わりに-extend-source を入れると通った。しかしこんどは

Linking Type1.out ...
ld: multiple definitions of symbol _main
/opt/intel/fc/10.0.016/lib/for_main.o definition of _main in section (__TEXT,__text)
fname.o definition of _main in section (__TEXT,__text)
make: *** [Type1.out] Error 1
 

というのが出る。検索をかけてみたら



というのがあったので、-nofor-main というオプションをLDFLAGSにつけてやったら通った。完了。

タグ:

+ タグ編集
  • タグ:
最終更新:2008年05月05日 12:04