コンピュータ / 2009/06/02 (Tue) / 編集 |
FortranをMacOSX 10.5にインストール
mpfr : 4.2.2
mpfr : 2.3.1
GCC : 4.4
Fortranで頑張ってググったり、バイナリ落とそうと頑張ったりしたがなかなかうまくゆかず、、、どうすんだ?とおもったらどうやらfortranはgccに入っているらしい。
mpfr : 4.2.2
mpfr : 2.3.1
GCC : 4.4
Fortranで頑張ってググったり、バイナリ落とそうと頑張ったりしたがなかなかうまくゆかず、、、どうすんだ?とおもったらどうやらfortranはgccに入っているらしい。
XcodeについてくるAppleのGCCには入ってないよ
In particular, Apple does not currently support the compilation of Fortran, Ada, or Java, although there are third parties who have made these work.
by man
gmp
GNU MP is a library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. It has a rich set of functions, and the functions have a regular interface. GNU MP is designed to be as fast as possible, both for small operands and for huge operands. The speed is achieved by using fullwords as the basic arithmetic type, by using fast algorithms, by carefully optimized assembly code for the most common inner loops for a lots of CPUs, and by a general emphasis on speed (instead of simplicity or elegance).
というもの、めんどくさかったのでMacPortsでインストールしちゃったよ
%sudo port install gmp
mpfr
MPFR is a portable C library for arbitrary-precision binary floating-point computation with correct rounding, based on the GMP multiple-precision library. The computation is both efficient and has a well-defined semantics. It copies the good ideas from the ANSI/IEEE-754 standard for fixed-precision floating-point arithmetic.
というもの、めんどくさかったのでこれもMacPortsでインストールしちゃったよ
%sudo port install mpfr
gcc
上の二つをインストールしたらいよいよgcc、gccもportに入ってたりするんだけど
%port variants gcc44
gcc44 has the variants:
universal
powerpc
odcctools: Use the odcctools instead of the system provided ones - does not work for x64 currently!
gfortran: Enables fortran; this language will be enabled in the final version - this variant is completely untested!
な感じなのでやめといたほうがよさげ
まずはソースコードをダウンロードしてコンパイルの準備
%wget 'ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.4.0/gcc-4.4.0.tar.gz'
%tar zxvf gcc-4.4.0.tar.gz
%mkdir gcc44
%cd gcc44
とりあえずconfigure
../gcc-4.4.0/configure -enable-languages=c,c++,fortran --enable-checking=release --disable-bootstrap --prefix=/usr/local/gcc44 --with-gmp --with-gmp-include=/opt/local/include --with-gmp-lib=/opt/local/lib --with-mpfr --with-mpfr-include=/opt/local/include --with-mpfr-lib=/opt/local/lib
- -enable-languages=c,c++,fortran CとC++とFortranを作るよ
- --enable-checking=release チェックをします
- --disable-bootstrap 面倒なテストを省略!コンパイルが早くなるらしい
- --prefix=/usr/local/gcc44 場所はともかく必ず指定、これやらないとデフォルトのgccに上書きされて泣きたくなることに、、、
- --with-gmp --with-gmp-include=/opt/local/include --with-gmp-lib=/opt/local/lib gmpのヘッダファイルとライブラリの場所を指定、gmpがないとconfigureでエラーが出る。。。
- --with-mpfr --with-mpfr-include=/opt/local/include --with-mpfr-lib=/opt/local/lib mpfrのヘッダファイルとライブラリの場所を指定、mpfrも必須
なんにもエラーがでなければmakeしてinstall
%make CC='cc -no-cpp-precomp' CFLAGS="-O2 -fomit-frame-pointer" all
%make install
make uninstallは存在しないらしいのでconfig.logなんかでオプションミスってないか確認してください。
というわけでインストールしたのがこれ
%/usr/local/gcc44/bin/gfortran -v
Using built-in specs.
Target: i386-apple-darwin9.7.0
コンフィグオプション: ../gcc-4.4.0/configure -enable-languages=c,c++,fortran --enable-checking=release --disable-bootstrap --prefix=/usr/local/gcc44 --with-gmp --with-gmp-include=/opt/local/include --with-gmp-lib=/opt/local/lib --with-mpfr --with-mpfr-include=/opt/local/include --with-mpfr-lib=/opt/local/lib
スレッドモデル: posix
gcc version 4.4.0 (GCC)
Hello World
fortranは拡張子にも決まりがあるらしい、とりあえず以下の内容の「hello.f90」を作成program hello
print *, 'Hello Fortran World!'
end program hello
すると
%/usr/local/gcc44/bin/gfortran hello.f90 -o hello
%./hello
Hello Fortran World!
一方、ファイル名を「hello.f」にすると
%mv hello.f90 hello.f
%/usr/local/gcc44/bin/gfortran hello.f -o hello hello.f:1.1: program hello 1 Error: Non-numeric character in statement label at (1) hello.f:1.1: program hello 1 Error: Unclassifiable statement at (1) hello.f:2.3: print *, 'Hello Fortran World!' 1 Error: Non-numeric character in statement label at (1) hello.f:2.3: print *, 'Hello Fortran World!' 1 Error: Unclassifiable statement at (1) hello.f:3.1: end program hello 1 Error: Non-numeric character in statement label at (1) hello.f:3.1: end program hello 1 Error: Unclassifiable statement at (1)
Fortranはさっぱりわからない上に情報が錯綜しているので詳しくはまた今度、とりあえず「拡張子にも気をつけてね」という話
PR
トラックバック
URL :
コメント