訳あって(=nbo6 を GAMESS と一緒に使いたかったので)、gfortran 4.7 を Mac にインストールすることになった。ネット検索すると MacPorts や Homebrew を使う方法が出てくるのだが、gcc/g++/gfortran だけ欲しいんだけど、と探していると、見つかりました。「gcc 4.7.2 をインストールする」。Linux 用の手順だけど、どのマシンでも OS でも同じです、と断言されているので、やってみたら、うまくいきました。
使ったファイル:gcc-4.7.1.tar.gz (site), mpc-0.9.tar.gz (site), mpfr-3.1.2.tar.gz (site), gmp-5.0.5.tar.bz2 (site)。
手順:
$ tar xjf gmp-5.0.5.tar.bz2 $ cd gmp-5.0.5 $ mkdir build; cd build $ ../configure --prefix=/usr/local/gcc-4.7 --disable-shared \ --enable-static CFLAGS=-fPIC CXXFLAGS=-fPIC $ make -j 2 $ sudo make install $ tar xzf mpfr-3.1.2.tar.gz $ cd mpfr-3.1.2 $ mkdir build; cd build $ ../configure --prefix=/usr/local/gcc-4.7 --disable-shared \ --enable-static CFLAGS=-fPIC CXXFLAGS=-fPIC \ --with-gmp=/usr/local/gcc-4.7 $ make -j 2 $ sudo make isntall $ tar xzf mpc-0.9.tar.gz $ cd mpc-0.9 $ mkdir build; cd build $ ../configure --prefix=/usr/local/gcc-4.7 --disable-shared \ --enable-static CFLAGS=-fPIC CXXFLAGS=-fPIC \ --with-gmp=/usr/local/gcc-4.7 --with-mpfr=/usr/local/gcc-4.7 $ make -j 4 $ sudo make install $ tar xzf gcc-4.7.1.tar.gz $ cd gcc-4.7.1 $ mkdir build; cd build $ ../configure --prefix=/usr/local/gcc-4.7 --with-gmp=\ /usr/local/gcc-4.7 --with-mpfr=/usr/local/gcc-4.7 \ --with-mpc=/usr/local/gcc-4.7 --enable-languages=c,c++,fortran \ --with-pic $ env LD_RUN_PATH=/usr/local/gcc-4.7/lib $ make -j 2 2>&1 | tee make.log $ sudo make install
ちょっと厄介なのは、libgcc
や libgfortran
に依存しないバイナリを作る方法。Linux などではリンク時に -static
とつければいいらしいのだが、Mac OS X では次のエラーが出る。
$ gfortran -static test.f ld: library not found for -lcrt0.o
対処法は、gfortran のバージョンによって微妙に違う。このバージョンでは、次のようなリンクオプションが必要。libquadmath.a
をフルパスで明示することに注意。
$ gfgortran -static-libgfortran -static-libgcc -nodefaultlibs \ -lgfortran -lgcc -lSystem /usr/local/gcc-4.7/lib/libquadmath.a test.f