G95 のコンパイル
プラットフォームに関する一般的な注意事項
OSX
MinGW
シグウィン
-mno-cygwin オプションのサポート
g95 の dll バージョンをビルドする
G95 はGCC の 4.x リリース バージョンを使用します。4.0.1、4.0.2、および 4.0.3 の安定版は動作することがわかっていますが、他のバージョンは動作しない可能性があります。
このバージョンは動作することがわかっていますが、他のバージョンでは動作しない可能性があります。
ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.3/gcc-core-4.0.3.tar.gzから gcc をダウンロードします。
このバージョンの GCC は、オブジェクト ファイルをソース ディレクトリとは別のディレクトリに格納します。G95 は、メインの ‘gcc-4.0.3’ ディレクトリの下にある ‘g95’ という名前のディレクトリに gcc オブジェクト ファイルとライブラリを見つけることを想定しています。次のコマンドを実行します。
CD gcc-4.0.3
mkdir g95
CD g95
gcc ‘configure’ スクリプトは、オブジェクト ファイルを受け取ると予想されるディレクトリで実行する必要があります。でgccを構成する
../configure –enable-languages=c
「make」を実行して gcc をビルドします。フルビルドは必要ありません。libbackend.a と libgcc.a ができれば、g95 をビルドするのに十分です。libgcc.a が存在しない場合は、’make libgcc.a’ を試してください。
g95 ソースをダウンロードし、便利なディレクトリに展開します。
g95 のメイン ディレクトリに移動し、次のように構成します。
./configure –prefix=<インストール ディレクトリ> \
–with-gcc-dir=<GCC ディレクトリのパス>
「make」または「make install」を使用して g95 をビルドし、インストール ディレクトリにインストールします。
libf95.a-0.91.tgz を解凍し、構成およびビルドして libf95.a を取得します。–prefix が g95 と同じであることを確認してください。
ライブラリをビルドしてインストールするには、’make install’ を実行します。
実行可能ファイルの正確な名前は、プラットフォームによって異なります。これへの便利なシンボリック リンクを作成します。
これで、fortran 95 プログラムを g95 でコンパイルできるようになります。
–enable-F=yes を使用してコンパイラとライブラリを構成し、F 制限付きで g95 をコンパイルします。
ビルドプロセスはまだかなり粗雑ですが、時間が経つにつれてスムーズになると確信しています.
プラットフォームに関する注意事項
OSX
g95を CFLAGS=-no-cpp-precompでコンパイルします。これにより、特別なプリプロセッサが起動して混乱するのを防ぎます。
AIX
CFLAGS=-liconv で構成する必要がある場合があります。
MinGW
MinGW でビルドするには、「Development」パッケージと「MinGW」パッケージがインストールされている必要があります。gcc-core、gettext、および make も必要です。リポジトリからソース コードをプルするには、cvs も必要です。
ビルド ツールをセットアップします。
MinGW-5.0.2.exe をディレクトリC:\MinGW にインストールします。
MSYS-1.0.10.exe (MSys と連携するように MinGW を構成) をディレクトリC:\msys\1.0にインストールします。
msysDTK-1.0.1.exe をディレクトリC:\msys\1.0 にインストールします。
bison とflex をディレクトリC:\GnuWin32 にインストールします。
MSVCP60.DLL をディレクトリC:\GnuWin32\binにインストールします。
ビルド ディレクトリと環境をセットアップします。
MSys シェルを開始し、次のコマンドを実行します。
mkdir -p /include/sys /src/G95/gcc-4.0.3/g95
終了
GCC を取得してビルドします。
MSys シェルを開始し、次のコマンドを実行します。
# FTP経由でGCCをダウンロード:
ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.3/gcc-core-4.0.3.tar.gz
# G95 用に GCC を設定
cd /src/G95/gcc-4.0.3/g95
/src/G95/gcc-4.0.3/configure –with-gcc \
–with-gnu-ld \
–with-gnu- as \
–host=mingw32 \
–target=mingw32 \
–prefix=/mingw \
–enable-threads \
–disable-nls \
–enable-languages=c \
–disable-win32-registry \
– -disable-shared \
–without-x
# G95 用の GCC をビルド
make
ビルドが失敗して次のメッセージが表示された場合:
build/gengtype.exe
/src/G95/gcc-4.0.3/gcc/input.h: そのようなファイルまたはディレクトリはありません
make[1]: *** [s-gtype] エラー 1
make[1]: ディレクトリを離れています ` /src/G95/gcc-4.0.3/g95/gcc’
make: *** [all-gcc] エラー 2
次のコマンドを実行します。
すべてがうまくいけば、g95 のコンパイルに必要なlibbackend.a とlibgcc.aの MinGW ビルドが作成されます。
g95 ソース配布を構成します。
g95 ソースをダウンロードし、 C:\msys\1.0\src\G95に展開します。
次のコマンドを実行します。
cd /src/G95/g95-0.91
./configure –prefix=/usr/local –with-gcc-dir=/src/G95/gcc-4.0.3
g95 のコンパイル手順に進みます 。
シグウィン
ビルド ツールをセットアップします。
Cygwin をディレクトリ C:\cygwin にインストールします。
ビルド ディレクトリをセットアップします。
Cygwin セッションを開始し、次のコマンドを実行します。
mkdir -p /src/G95/gcc-4.0.3/g95
GCC を取得してビルドします。
Cygwin セッション内で、次のコマンドを実行します。
# FTP経由でGCCをダウンロード:
ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.3/gcc-core-4.0.3.tar.gz
# G95 用に GCC を構成
cd /src/G95/gcc-4.0.3/g95
/src/G95/gcc-4.0.3/configure –enable-languages=c \
–disable-nls
# G95 用に GCC をビルド
make
すべてがうまくいけば、g95 のコンパイルに必要な libbackend.a と libgcc.a の Cygwin ビルドが作成されます。
g95 ソース配布を構成します。
g95 ソースをダウンロードし、C:\cygwin\src\G95 に展開します。
Cygwin セッション内で、次のコマンドを実行します。
cd /src/G95/g95-0.91
./configure –prefix=/usr/local –with-gcc-dir=/src/G95/gcc-4.0.3
g95 のコンパイル手順に進みます。
Cygwin での MinGW ターゲットのサポート
G95 の Cygwin ビルドを正常に完了する
Cygwin 内で MinGW をサポートするように G95 ライブラリを構成する
Cygwin セッションを開始し、次のコマンドを実行します。
cd /src/G95/g95-0.91/libf95.a-0.91
./configure –prefix=/usr/local –with-gcc-dir=/src/G95/gcc-4.0.3 –with-mingw
Cygwin 内で MinGW をサポートする G95 ライブラリをビルドする
Cygwin セッション内で次のコマンドを実行します。
rm *.o *.a
メイク
これにより、メンバーが -mno-cygwin オプションを有効にして Cygwin でコンパイルされた libf95.a が再構築されます。
Cygwin G95 の MinGW 準拠ライブラリを有効にします。
Cygwin セッション内で、次のコマンドを実行します。
mkdir /usr/local/lib/gcc-lib/i686-pc-mingw32/4.0.3/
ranlib libf95.a
cp libf95.a /usr/local/lib/gcc-lib/i686-pc-mingw32/4.0.3 /
cd /usr/local/lib/gcc-lib/i686-pc-cygwin/4.0.3/
g95 -dumpspecs > specs.0
sed -e ‘/*startfile:/ {
n
s/%{mno-cygwin:dllcrt2 %O%s/%{mno-cygwin:\/usr\/lib\/mingw\/dllcrt2%O%s -L\/usr\/local\/lib\/gcc-lib\/i686-pc-mingw32 \/4.0.3 -L\/usr\/lib\/mingw/
s/%{mno-cygwin:crt2%O%s/%{mno-cygwin:\/usr\/lib\/mingw\/crt2% O%s -L\/usr\/local\/lib\/gcc-lib\/i686-pc-mingw32\/4.0.3 -L\/usr\/lib\/mingw/ }’ specs.0 >
specs
rm specs.0
-mno-cygwin が Cygwin g95 でサポートされるようになりました
Cygwin セッションの出力例を確認すると、次のようになります。
dmiles@STACK02 /tmp
$ uname
CYGWIN_NT-5.1
dmiles@STACK02 /tmp
$ cat hello.f
program hello
print *,’hello’
end
dmiles@STACK02 /tmp
$ g95 -o hello_cygwin.exe hello.f
dmiles@STACK02 /tmp
$ ./hello_cygwin
こんにちは
dmiles@STACK02 /tmp
$ objdump -x hello_cygwin.exe | grep “DLL 名” DLL
名: cygwin1.dll
DLL 名: cygwin1.dll DLL
名: KERNEL32.dll
dmiles@STACK02 /tmp
$ g95 -mno-cygwin -o hello_mingw.exe hello.f
dmiles@STACK02 /tmp
$ ./ hello_mingw
こんにちは
dmiles@STACK02 /tmp
$ objdump -x hello_mingw.exe | grep “DLL 名”
DLL 名: msvcrt.dll
DLL 名: msvcrt.dll
DLL 名: KERNEL32.dl
g95 の dll バージョンをビルドする
g95 ソースをダウンロードして解凍し、dll を使用する g95 のバージョンをビルドするスクリプトは、Dave Miles によって提供されました。
Cygwin 環境は、上記のように g95 をビルドするように設定する必要があります。
次のスクリプトを bld-g95.sh という名前のファイルに保存します。
#!/bin/sh
{
cd /src/G95
rm -fR g95-0.91
wget -O – https://www.g95.org/g95_source.tgz | tar xvfz –
cd g95-0.91
./configure –prefix=/usr/local –with-gcc-dir=/src/G95/gcc-4.0.3
make
tar -zxf libf95.a-0.91.tar.gz && \
cd libf95.a-0.91 &&\
./configure –prefix=/usr/local –with-gcc-dir=/src/G95/gcc-4.0.3 &&\
make
if [ $? != 0 ]
次に
終了
fi
make install
mv main.o main.g95
gcc -mdll -o g95.dll \
-Wl,–output-def \
-Wl,g95.def \
-Wl,–out-implib \
-Wl,libf95.dll.a \
-Wl,–export-all-symbols *.o -lws2_32
if [ -f libf95.dll.a ]
then
cp libf95.dll.a /usr/local/lib/gcc-lib/i686-pc-cygwin/4.0.3/
fi
if [ -f g95.dll ]
then
cp g95 .dll /bin
fi
cp main.g95 /lib/g95main.o
cd ..
make インストール
cd ..
} 2>&1 | ティー -a bld-g95.log
Cygwin bash シェルで、次のコマンドを実行します。
chmod +x bld-g95.sh
./bld-g95.sh
コンパイルするときは、/lib/g95main.o にリンクするか、-shared を指定してコンパイルします。