本ページは、PGIコンパイラを使用して、インストール時の問題等に関する FAQ のページです。
© 株式会社ソフテック
インストール時の問題とご質問への回答
1. PGI コンパイラをインストールしようとするシステムには、gcc、g77 など GNU コンパイラを先にインストールしている必要がありますか
(2007年 4 月 18 日更新)
システムには、gcc、gcc-c++、(gcc-fortran もしくは gcc-g77) の GNU GCC 開発環境用のパッケージのライブラリがインストールされている必要があります。これらのパッケージがインストールされていない場合は、PGI コンパイラのインストール前に、インストールを行って下さい(不足しているアプリケーションがある場合、PGI コンパイラのインストール時にエラー表示されます)。64bit 環境の場合は、32ビット対応の GNU gcc および、gcc-fortran もしくは gcc-g77 のいずれかか一つの開発環境も実装されている必要があります。なお、パッケージの名称は、distiribution によって異なりますのでご注意ください。 RedHat/Fedora Core においては gcc-gfortran と称しています。
GCC 4.0 以降では、 gcc-g77 プロジェクトが凍結されましたので、distribution の中に含まれない場合があります。その場合は、gcc-fortran パッケージを入れて下さい。今後は、gcc-fortran に統一されることとなるでしょう。
rpm -qa コマンド等で、インストールされているシステム・ソフトウェアをご確認ください。以下の例は、64ビットの Linux 上の GNU GCC 関係のパッケージと32ビット互換(compat-**)系のパッケージを表示したものです。 GCC3.x、GCC4.0 を有する Linux distribution では、32ビット対応の GNU GCC パッケージ名が区別されておりましたが、SUSE 10.1 の例のように、GCC 4.1 においては、たとえば gcc-fortran-32bit と言った 32ビット対応のパッケージ名が現れておりません。しかし、SUSE 10.1では、gcc-fortran-4.1.0-25 の表示であっても、実際は32ビット環境が内在しております。また、compat-g77 パッケージも存在していますので問題はありません。今後は、すべての distribution で、compat-g77 は含まれないと思われますので、Fortran系に関しては、 gcc-fortran パッケージをシステムにインストールすることで代替するようにしてください。
(コマンドヒント) パッケージのアーキテクチャ名も表示させたい場合
# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' gcc gcc-c++ gcc-gfortran
glibc
gcc-4.1.1-52.el5 (x86_64)
gcc-c++-4.1.1-52.el5 (x86_64)
gcc-gfortran-4.1.1-52.el5 (x86_64)
glibc-2.5-12 (i686)
glibc-2.5-12 (x86_64)
| RedHat Enterprise Linux 4 (64bit) | SUSE Linux 10.0 (64bit) | SUSE Linux 10.1 (64bit) |
| # uname -a Linux node1 2.6.9-34.0.2.ELsmp # rpm -qa | grep gcc compat-gcc-32-3.2.3-47.3 libgcc-3.4.5-2 gcc-c++-3.4.5-2 gcc-java-3.4.5-2 gcc-g77-3.4.5-2 libgcc-3.4.5-2 gcc-3.4.5-2 compat-libgcc-296-2.96-132.7.2 compat-gcc-32-c++-3.2.3-47.3 # rpm -qa | grep g77 gcc-g77-3.4.5-2 ※この OS には、gcc-fortran をあえて入れていない。 PGI は、g77(64ビット、32ビット)のライブラリ群を使用している |
# uname -a Linux photon27 2.6.13-15-smp # rpm -qa | grep gcc gcc-4.0.2_20050901-3 gcc-c++-4.0.2_20050901-3 gcc-fortran-4.0.2_20050901-3 gcc-32bit-4.0.2_20050901-3 libgcc-4.0.2_20050901-3 gcc-info-4.0.2_20050901-3 gcc-fortran-32bit-4.0.2_20050901-3 gcc-java-4.0.2_20050901-3 # rpm -qa | grep compat compat-g77-3.3.5-2 compat-libstdc++-5.0.7-6 compat-2004.11.13-4 compat-32bit-2004.11.13-4 compat-curl2-32bit-7.11.0-7 compat-curl2-7.11.0-7 |
# uname -a Linux photon28 2.6.16.13-4-smp # rpm -qa | grep gcc gcc-info-4.1.0-25 libgcc-4.1.0-25 gcc-locale-4.1.0-25 gcc-java-4.1.0-25 gcc-fortran-4.1.0-25 gcc-4.1.0-25 gcc-c++-4.1.0-25 # rpm -qa | grep compat compat-openssl097g-32bit-0.9.7g-11 compat-libstdc++-5.0.7-21 compat-g77-3.3.5-17 compat-curl2-7.11.0-18 compat-openssl097g-0.9.7g-11 compat-curl2-32bit-7.11.0-18 compat-32bit-2006.1.25-9 compat-2006.1.25-9 java-1_4_2-gcj-compat-1.4.2.0-33 |
上記のようなパッケージ名だけの確認だけでは不安な場合、実際のコマンドで確認して見ることです( x86_64 の場合)。以下は、64ビット Linux上で、32ビットの gcc/gcc-fortran 環境が実装されているか、64ビットの gcc/gcc-fortran 環境が実装されているかを確認するための方法を例示したものです。以下のように 32 並びに 64 ビット環境の GCC/gfortran コンパイルがうまく動作するならば、PGI のインストール環境としては問題ないということが言えます。
(注意) gcc や gfortran の32ビット用の各 Linux distributions 上でのパッケージ名称は、頻繁に変更されます。従って、ここで説明している名称は、あくまでも一例とお考えください。64ビットLinux の場合の 大事なポイントは、32ビット用のクロスコンパイルが必要な場合、gcc も gfortran も32bit互換のパッケージを入れておく必要があると言うことです。
$ uname -a
Linux photon28 2.6.16.13-4-smp #1 SMP Wed May 3 04:53:23 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux
gccを使用し、32bit / 64bitのライブラリ環境が存在するか、確認の方法を説明します。
$ cat hello.c
main()
{printf("hello\n");}
$ gcc -m32 hello.c -o a.out (32bit環境コンパイル -m32 オプションで生成できるか?)
hello.c: In function 'main':
hello.c:2: warning: incompatible implicit declaration of built-in function 'printf
$ file a.out (32bit モジュールで確かに生成されている ==> 32bit環境、問題なし)
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
$ ./a.out
hello
$ gcc hello.c -o a.out (64ビット環境コンパイル デフォルト)
hello.c: In function 'main':
hello.c:2: warning: incompatible implicit declaration of built-in function 'printf
$ file a.out (64bit モジュールで確かに生成されている ==> 64bit環境、問題なし)
a.out: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV),
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
$ ./a.out
hello
-----------------------------------------------------------------------
次に PGI Fortran に必要な GCC Fortran ライブラリ環境(32bit/64bit) が存在するか、
gcc-fortran の環境を使用して確認の方法を説明します。
$ cat hello-f.f
print *,"Hello from Fortran"
end
$ gfortran -m32 hello-f.f (32bit環境コンパイル -m32 オプションで生成できるか?)
$ file a.out (32bit モジュールで確かに生成されている ==> 32bit環境、問題なし)
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
$ a.out
Hello form Fortran
$ gfortran hello-f.f (64bit環境コンパイル デフォルト)
$ file a.out (64bit モジュールで確かに生成されている ==> 64bit環境、問題なし)
a.out: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV),
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
$ a.out
Hello from Fortran
------------------- gfortran の替わりに g77 環境でもよい(古い Linux distribtionsの場合) -------
$ g77 -m32 hello-f.f
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/L
inux 2.6.4, not stripped
$ g77 hello-f.f
$ file a.out
a.out: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV),
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
(補足情報)
1-1 最新バージョンだけでなく、過去のバージョンも同時にインストールして各々動作しますか (Linuxの場合)
最新バージョンのライセンス・キーを設定することにより、それ以前の過去のバージョンも含めて、コンパイラ・ソフトウェアを使用することが可能です。これに関連する「ライセンス・キー」の説明は、こちらの記事で説明しております。さて、実際に複数のバージョンをインストールする際に必要な留意事項を以下に説明します。以下の内容は、PGI 5.0 以降のバージョンに対して対応します。なお、PGI 4.x 以前のバージョンの場合、PGI ソフトウェアがインストールされるディレクトリ構造が異なりますので、弊社までお問合せください(この場合のFAQは、以下の記事の #10 にもございます)。
PGI コンパイラのソフトウェアの各バージョンは、そのソフトウェア実装上、各バージョン番号名となる「サブ・ディレクトリ」で管理されます。一般に、PGI コンパイラをインストールする際に、インストーラは「どこにインストールしますか?」と言う設問を表示します。ここでは、これを「インストールするトップ・ディレクトリ」と言い、このトップ・ディレクトリはインストーラのデフォルトでは、/usr/pgi (PGI 6.1以前の場合)、/opt/pgi (PGI6.2以降の場合)のどちらかとなっています(明示的に他の異なる場所を指定することもできます)。この配下に、PGIソフトウェアの各バージョン(リビジョン)がインストールされております。
実装後のディレクトリ構造は、以下のようになっております。(ここでは、トップ・ディレクトリを /opt/pgi とします)
/opt/pgi/linux86 (32bit 用のコンパイラソフトウェア)
/opt/pgi/linux86-64 (64bit 用のコンパイラソフトウェア)
但し、32ビット Linux の場合は、このディレクトリは作成されない
さらに、上記のディレクトリの配下には、PGI のバージョン番号名のサブ・ディレクトリが作成されます。例えば、Linux 上で、PGI 6.2 をインストールした後に、過去のバージョン 6.1、5.2 の二つをインストールした場合は、以下のようなディレクトリ構造となります。過去のバージョンをインストールする際には、「インストールするトップ・ディレクトリ」を全て同じ、 /opt/pgi と指示してください。これで全てのバージョンのソフトウェアの配置が終了します。
(Linux 32bit用のコンパイラ実装環境) /opt/pgi/linux86/6.2/ /6.1/ <--- 過去のバージョン /5.2/ <--- 過去のバージョン (Linux 64bit用のコンパイラ実装環境) /opt/pgi/linux86-64/6.2/ /6.1/ <--- 過去のバージョン /5.2/ <--- 過去のバージョン
Linuxの場合と同様に、Mac OS X版、WIndows版においても、同じような実装形態となっています(使用しているバージョン番号は一例です)。
(Mac OS Xの場合の32bit用のコンパイラ実装環境) /opt/pgi/osx86/11.8/ /10.1/ <--- 過去のバージョン /9.0/ <--- 過去のバージョン (Mac OS Xの場合の64bit用のコンパイラ実装環境) /opt/pgi/osx86-64/11.8/ /10.1/ <--- 過去のバージョン /9.0/ <--- 過去のバージョン (Windowsの場合の32bit用のコンパイラ実装環境) C:\Program files\PGI\win32\11.8 \10.1 <--- 過去のバージョン \8.0 <--- 過去のバージョン (Windowsの場合の64bit用のコンパイラ実装環境) C:\Program files\PGI\win64\11.8 \10.1 <--- 過去のバージョン \8.0 <--- 過去のバージョン
さて、Linux上で上記の複数のバージョン・ソフトウェアをインストールする際の注意事項を述べます。(/opt/pgi にインストールすることを前提とします) (2012年1月6日補筆)
PGI 7.0 以降のインストーラでは、「デモライセンスを発行しますか?」と言う設問はありませんが、複数のPGIバージョンを追加インストールする際は、既存(正規)の license.dat のバックアップ・コピーを作成してから行ってください。PGI 9.0 以降は、既存の license.dat の上書きはしませんが、license.dat のバックアップは取っておいた方がよいでしょう。
(デフォルトとしたいバージョンの明示的な設定方法)
ユーザ環境の PGI 用の PATH 環境変数の設定は、最も最新のバージョンのディレクトリ・パスを定義することを推奨します。正確に言えば、ここで、デフォルトのコンパイラ・バージョンのディレクトリ・パスを設定すると言うことになります。 デフォルト・バージョンを 11.9 とした場合は、以下のように、環境変数 PATH (path) の設定では、11.9 と言うディレクトリ配下の bin (コンパイラコマンドが含まれる)が設定されます。例えば、デフォルトのバージョンを 9.0 にしたい場合は、11.9 を 9.0 を設定してください。このように設定したとしても、過去あるいは、上位のバージョンは以下に述べる方法で利用することができます。
(64bit Linuxの場合) csh または、tcsh の場合、$HOME/.cshrc 等に以下のような記述を加えて下さい。 setenv PGI /opt/pgi (コンパイラの installation directoryを定義) set path = ( $PGI/linux86-64/11.9/bin $path ) setenv MANPATH “$MANPATH“:$PGI/linux86-64/11.9/man setenv LM_LICENSE_FILE $PGI/license.dat sh または、bash の場合、$HOME/.bashrc 等に以下のような記述を加えて下さい。 export PGI=/opt/pgi (コンパイラの installation directoryを定義) export PATH=$PGI/linux86-64/11.9/bin:$PATH export MANPATH=$MANPATH:$PGI/linux86-64/11.9/man export LM_LICENSE_FILE=$PGI/license.dat
(過去のバージョンをコンパイラ・オプションの指定で利用する方法)
上記のような形で設定された環境では、PGI の過去のバージョンは、コンパイラオプション -V{revision_number} をコマンドラインに追加することにより利用可能です。(もちろん、指定しようとする過去のバージョンは、実装されている必要があります)
$ pgf95 -fastsse test.f (デフォルトのバージョンが利用される)
$ pgf95 -V7.1 -fastsse test.f (明示的に -V7.1 を付けることで、PGI 7.1 が利用される)
$ pgf95 -V11.8 -fastsse test.f (明示的に -V11.8 を付けることで、PGI 11.8 が利用される)
2. PGI Linux / Mac OS X 用の bash または、csh 環境において環境変数の設定の方法を教えてください)
PGI コンパイラのインストール並びにユーザ環境でのコンパイル・実行時に必要な環境変数の設定方法は、以下をご参考下さい。なお、環境変数 PGI は必ずご設定下さい。設定されない場合、ライセンスファイルを正常に認識できません。
ユーザ環境のシェル初期設定ファイル ($HOME/.cshrc等) に以下のような記述を行います。(“linux86-64/2011/” の 2011 の部分はソフトウェアのバージョン番号を表します) 以下の例は、64bit OS の場合のものですが、 32bit OS の場合は、path と MANPATH の設定の行の「linux86-64」 の部分が 「linux86」 に変更になります。
なお、PGI コンパイラの今までのバージョン名は、 PGI 2011, 2010, 9.0, 8.0, 7.2, 7.1, 7.0, 6.2, 6.1, 6.0 ,5.2 ,... と言った番号となります。下記のパス名の「2011」の部分を当該使用しているバージョン名に変更して下さい。2011 や 2010 と言ったバージョン名は、「総称バージョン名」です。以下のパス名をこの総称バージョン名で定義していますが、例えば、PGI 2011 と言うリリースの集合の中には、個別の実体リビジョンが存在し、11.0, 11.1, 11.2 ... 11.10 までのリビジョンが存在します。2011 の代わりに、個別リビジョン名、例えば、11.2 と言った形で定義することも、もちろん可能です。「総称バージョン名」を PATH の定義に使用する利点は、「総称バージョン」配下の各ファイルは、既に実装されている PGI 2011 の各リビジョン・ソフトウェアの中で、最新のリビジョンの個別ファイルにシンボリック・リンクされているため、「総称バージョン名」を指定しておくと、いつも最新のリビジョンをデフォルトとして使えるような設定になることです。(参考)PGIのバージョンとリビジョンの意味
PGI Server ライセンス製品の場合は、複数のシステム上に「PGI コンパイラソフトウェア」をインストールしてご利用になれますので、例えば、32ビットLinux システムと 64ビットLinux システムの混在環境において、どのような環境変数の設定方法があるか、こちらのページにて説明しております。
(64bit Linux製品の場合) csh または、tcsh の場合、$HOME/.cshrc 等に以下のような記述を加えて下さい。 setenv PGI /opt/pgi (コンパイラの installation directoryを定義) set path = ( $PGI/linux86-64/2011/bin $path ) setenv MANPATH “$MANPATH“:$PGI/linux86-64/2011/man setenv LM_LICENSE_FILE $PGI/license.dat sh または、bash の場合、$HOME/.bashrc 等に以下のような記述を加えて下さい。 export PGI=/opt/pgi (コンパイラの installation directoryを定義) export PATH=$PGI/linux86-64/2011/bin:$PATH export MANPATH=$MANPATH:$PGI/linux86-64/2011/man export LM_LICENSE_FILE=$PGI/license.dat
Mac OS X の場合は、「osx86-64」と言うパス名が採用されています。32bitのMac OS X の場合は、「osx86」に変更となります。以下の例は、パス名の中に「総称バージョン名」を使用せず、内部リビジョン番号(PGI 2011 の場合は、11.x で、" x" は、リビジョン番号)でパスを指定する場合の例です。もちろん、上記の Linux の例の時と同じように「総称バージョン名」2011 と指定しても良いです。
(64bit Mac OS X 製品の場合) csh または、tcsh の場合、$HOME/.cshrc 等に以下のような記述を加えて下さい。 setenv PGI /opt/pgi (コンパイラの installation directoryを定義) set path = ( $PGI/osx86-64/11.x/bin $path ) setenv MANPATH “$MANPATH“:$PGI/linux86-64/11.x/man setenv LM_LICENSE_FILE $PGI/license.dat sh または、bash の場合、$HOME/.bashrc 等に以下のような記述を加えて下さい。 export PGI=/opt/pgi (コンパイラの installation directoryを定義) export PATH=$PGI/osx86-64/11.x/bin:$PATH export MANPATH=$MANPATH:$PGI/linux86-64/11.x/man export LM_LICENSE_FILE=$PGI/license.dat
3. PGI コンパイラでテストプログラムをコンパイルした際、 次のようなメッセージ cannot open ./crtbegin.o が出てコンパイルできません
PGI コンパイラインストール時に英語モード以外でインストールを行っているのが原因です。 PGI コンパイラのインストールは、環境変数 LANG が英語モードの環境で行う必要があります。以下の例のように root ユーザ上で、環境変数 LANG を設定後、再度インストールを行って下さい。なお、環境変数 LANG は、設定したコンソールのみ有効ですので、同じコンソールにて PGI コンパイラのインストール(install コマンドの実行)を行なって下さい。
【エラーメッセージ】 /usr/bin/ld: cannot open ./crtbegin.o: No such file or directory. (/usr/bin/ld: cannot open ./crtbegin.o: そのようなファイルやディレクトリはありません) 【対処法】 sh、bash の場合 % export LANG=C(または、export LANG=en_US) % cd /tmp/pgi (PGIコンパイラ tarファイル等を展開したディレクトリに移動) % ./install csh、tcsh の場合 % setenv LANG C(または、setenv LANG en_US) % cd /tmp/pgi (PGIコンパイラ tarファイル等を展開したディレクトリに移動) % ./install LANG 以外の環境変数で、LC_MESSAGES、LC_CTYPE 等も ja_JP に設定されている場合は、 これらの環境変数も "C"(あるいは、en_US) に設定してください。これらが何も設定されて いない場合は、LANG のみ変更してください。 【具体的な修復法】 これを修復するには、再度、PGI ソフトウェアのインストールのみ行っていただく必要が あります。実施することは、PGIソフトウェアの上書きインストールのみで、FLEXlm の設定等は、 現状のままで問題ありません。 1.現在の取得 license.dat のバックアップをとる。 $ cd /usr/pgi $ cp license.dat license.dat.back 2.PGIソフトウェア(linux86-64.tar.gz)を /tmp/PGI(一例)の配下に展 開。(/tmp上にlinux86-64.tar.gzがあるものと想定) $ cd /tmp $ mkdir PGI $ cd PGI $ tar zxvf ../linux86-64.tar.gz 3.一時的にインストールのために、シェルの言語環境変数を英語に設定(ルート権限) $ export LANG=C(または、export LANG=en_US) ※LANG 以外の環境変数で、LC_MESSAGES、LC_CTYPE 等も ja_JP に設定されている場合は、 これらの環境変数も "C"(あるいは、en_US) に設定してください。これらが何も設定されて いない場合は、LANG のみ変更してください。 4./tmp/PGI 上の ./install を実行 $ ./install 設問に答える。インストールするディレクトリを聞かれるので、前と同 じところ(デフォルトは /usr/pgi) に指定する(上書きする) 最後まで設問に答えて、インストールを終了する。 5.正規ライセンスを戻す $ cd /usr/pgi $ cp license.dat.back license.dat 以上で上書きインストールが終了します。Flexlm ライセンスマネージャ は、何もしなくて結構です。
4. コンパイラのソフトウェアが正常にインストールされたか、確認する方法はありますか
"-dryrun -V" オプションを使って、リリースナンバーおよびコンパイルシーケンスの確認ができます。但し、この確認方法は、PGIソフトウェアの実装が正常に行われたかどうかのものであり、license.dat 並びに FLEXlm ライセンスマネージャーが正常に機能しているかどうかまでは確認できません。
Fortran 77 Compilerの場合: pgf77 -dryrun -V x.f Fortran 2003 Compilerの場合: pgfortran -dryrun -V x.f C++ Compilerの場合 : pgCC -dryrun -V x.c C Compilerの場合 : pgcc -dryrun -V x.c
これらのコマンドを実行するために、x.f ファイルや x.c ファイルは、存在しなくても構いません。この場合は、Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\pgcc_rc 等のメッセージが出ますが、エラーではありません。但し、その他の何らかのエラーメッセージが表示された場合、ライセンスファイルおよび環境変数等の設定に誤りがないか再度ご確認下さい。上記オプションで実行すると以下のようなメッセージが出力されます。この中で、"not found" がありますが、これは正常なメッセージですので、ご安心ください。正常にPGI コンパイラはインストールされており、ライセンスの設定も問題ありません。なお、 -dryrun オプションを付けてコンパイルした場合は、実行モジュール(a.out) は生成されませんのでご注意ください。
(以下は、Windows 32bit 上での例) $ pgcc -dryrun -V x.c pgcc 11.8-0 32-bit target on x86 Windows -tp penryn Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved. Copyright 2000-2011, STMicroelectronics, Inc. All Rights Reserved. Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\pgcc_rc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\nativerc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\fnativerc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\ccrc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\x86rc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\x8632rc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\ntrc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\win32rc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\iparc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\acc1rc Reading rcfile C:\PROGRA~1\PGI\win32\11.8\bin\localrc Skipping siterc (not found) Skipping mypgirc (not found) Skipping mypgccrc (not found) C:\PROGRA~1\PGI/win32/11.8/bin\pgc.EXE x.c -opt 1 -version -terse 1 -inform warn -x 120 0x80000000 -x 59 (省略) C:\PROGRA~1\PGI/win32/11.8/bin\as32.EXE x.s -o C:\temp\pgcc2aDmObxA9iMKfb.obj C:\PROGRA~1\PGI/win32/11.8/bin\pgcnv.EXE C:\temp\pgcc2aDmObxA9iMKfb.obj C:\temp\pgcc3bfmObpTiZDSNS.obj Writing to file C:\temp\pgcc4cTmObhxUcuTw4.lnk C:\PROGRA~1\PGI/win32/11.8/lib\pgimainmx.obj "-libpath:C:/Program Files/PGI/Microsoft Open Tools 10/lib" " -libpath:C:/Program File s/PGI/Microsoft Open Tools 10/PlatformSDK/lib" -incremental:no -debug (省略) "C:/Program Files/PGI/Microsoft Open Tools 10/bin\link.EXE" /NOLOGO @C:\temp\pgcc4cTmObhxUcuTw4.lnk C:\PROGRA~1\PGI/win32/11.8/bin\pgstrp.EXE ./x.exf x.exe ./x.dwf Keeping C:\temp\pgcc2aDmObxA9iMKfb.obj Keeping C:\temp\pgcc3bfmObpTiZDSNS.obj Keeping C:\temp\pgcc4cTmObhxUcuTw4.lnk Keeping ./x.exf
5. PGI コンパイラでテストプログラムをコンパイルした際、Permission denied のメッセージでコンパイルできません
Assembler message : FATAL : Can't create test.o : Permission denied.
コンパイルを実行しているユーザの書き込み権限が設定されていないディレクトリで、コンパイルを行なっていることが原因です。書き込み権限が設定されているディレクトリでコンパイルを行なって下さい。
6. PGI コンパイラで作成した実行バイナリを実行したら、"EXECUTABLE EXPIRED"と言うメッセージが出て実行できません
EXECUTABLE EXPIRED - This executable was created using a Trial versionof PGI software. The PGI Software and derived executables cease to function and cannot be used after the conclusion of the Trial testing period.
評価版ライセンスで作成された実行モジュールを用いていることが原因です。評価版ライセンスで作成された実行バイナリ(オブジェクトファイル含む)またはライブラリ(MPICH ライブラリ等)は、使用開始後 2 週間で使用できなくなります。正式ライセンスの環境下で再度、コンパイルを行なってから実行して下さい。
7. PGI コンパイラのバージョンアップの方法を教えてください
PGI コンパイラのバージョンアップの方法をこちらのページで詳細に説明しております。また、新バージョン用のライセンス・キーの取得については、こちらのページをご覧ください。また、バグフィックス・ソフトウェアのバージョンアップの方法も記載されております。
8. PGI の旧バージョンと新リリースのバージョンを使い分けたいのですが、方法を教えてください
新規にインストールした PGI コンパイラのバージョンと旧バージョンを切り替えて使いたい場合は、各ユーザのログインシェルで設定するPGI のソフトウェアの存在している場所、すなわち、パス(PATH)の設定をその都度、変更する方法、あるいはコンパイラ・オプション -V{revision_version}を指定する方法のどちらかを選択してご利用下さい。詳細については、こちらのページをご覧ください。また、旧バージョンが PGI 4 以前のソフトウェアのインストールの方法と設定の仕方は、こちらのページで説明しております。
9. PCクラスタ上に、PGI コンパイラをインストールする際の推奨方法を教えてください
PGI Workstation / Server ライセンスのどちらの場合でも、PCクラスタ上での PGI ソフトウェアのインストールは、次の方法を推奨します。これは、PGIコンパイラで生成された実行モジュールが各スレーブ・マシンで動作する際、PGI のランタイム・ダイナミック共有ライブラリ(libpcg.so 等)をローディングするため、この共有ライブラリが cluster-wide で共有領域に存在していなければ実行時エラーとなることを回避するためです。なお、PGI Workstation ライセンスの場合は、 PGI ソフトウェアをインストールしたマスタ・ノード上でのみコンパイルが可能です。一方、PGI Server ライセンスでは、スレーブ・ノード上でもコンパイルが可能です。 関連する技術情報(TIPS) はこちらです。
10. 現在、PGI 5.1 バージョンを使用していますが、下位のバージョン PGI 4.1-2 も使用したい場合のインストール並びに設定の方法を教えてください
ここで説明する前提は、現在使用している PGI 5.1 (一例です) のコンパイラ・ソフトウェアをそのまま残し、新たな directory を作成し、下位のバージョンである PGI 4.1-2 (一例です)をその配下にインストールすることを想定しています。注意事項として、PGI ソフトウェアは、バージョン 5.0 以降とそれ以前のバージョン 4 以前では、内部のディレクトリ管理方式が異なります。バージョン 5.0 以降のソフトウェアは、インストールするディレクトリは /usr/pgi (デフォルト) 配下で、各バージョンごとにサブ・ディレクトリを作成して管理可能となっております。従って、インストール時にソフトウェアをインストールする親ディレクトリ(/usr/pgi)を指定するとその配下に自動的に新バージョンのサブ・ディレクトリが作成され、過去のバージョンが上書きされることはありません。一方、PGI バージョン 4 以前のソフトウェアは、バージョンを管理するサブ・ディレクトリを /usr/pgi 配下にもちませんので、上書きされることがあります。この場合は、全く新しいディレクトリ下(例えば、/usr/pgi412)にソフトウェアをインストールした方が安全にご使用になれます。なお、インストールする親ディレクトリは、インストーラが尋ねてきますので、そこでご指定ください (デフォルトは、/usr/pgi です)。
1.PGI バージョン 4.1-2 をダウンロードする http://www.pgroup.com/support/downloads.php?release=archive をアクセスしますと過去のバージョンのアーカイブがあります。この中で、ご所望のバージョンの 「Latest Version」欄のバージョン番号をクリックしてください。ログイン画面が現れます。 なお、PGI 社のサイトから初めてソフトウェアをダウンロードする場合は、 「ダウンロード用のアカウント」を作成する必要があります。ログイン画面内の 「Need an account?」をクリックして、ユーザ登録してください(アカウントを作成してください)。 アカウントのパスワードに関しては、登録後、メールにて送付されます。この ID/Passwd で、 ダウンロードが可能となります。 2.PGI 4.1-2 の tar file を現在の PGI が動作しているシステムに移します。これを /tmp/pgi 配下におくこととします。これ以降の操作は「ルート権限」で行ってください。
$ cd /tmp $ mkdir pgi $ cd pgi /tmp/pgi に linux86.tar.gz を ftp でコピーします。 $ tar zxvf linux86.tar.gz で展開します 展開しますと install ファイルがあります。この install scriptを実行します。 $ ./install スクリプトの実行途中に、どの directory にインストールするか尋ねられます。デフォルトは、 /usr/pgi となっていますので、これを今回は、別の場所(例 /usr/pgi412)として入力して 下さい。これが、一番大事なポイントです。 その後、インストール手続きを行い、テンポラリライセンスの発行を冗長ですが YES として 下さい。これで、/usr/pgi412 配下に PGI 4.1-2 バージョンが作成されました。 3.FLEXlm のライセンスマネージャの設定は、行わなくても結構です。 即ち、現状の PGI 5.1 のインストール時に設定したライセンスマネージャをそのまま使います。 (現システムで、ライセンス・デーモン (lmgrd) が動いているはずです。) 4.現 5.1 上の directoryである /usr/pgi に移動して次のコマンドを実行してください。 (現在の 5.1 用のライセンス・ファイルを /usr/pgi421 配下にコピーします) $ cd /usr/pgi (現 5.1 コンパイラの場所) $ cp license.dat /usr/pgi412/license.dat これは、取得した現在のライセンスファイルをそのまま、/usr/pgi412 配下にコピーすることを行います。 --------ここまでがルート権限で行う作業です-------------------------- 次に、使用するユーザの環境を設定します。ユーザのログインシェル(.bashrc or .cshrc 等)の 内容を書き換えます。PGIコンパイラを利用する場合の環境変数、パスの設定は以下のものが必要です。 export PGI=/usr/pgi (コンパイラの installation directoryを定義) export PATH=$PGI/linux86/5.1/bin:$PATH export MANPATH=$MANPATH:$PGI/linux86/5.1/man export LM_LICENSE_FILE=$PGI/license.dat 現在、少なくとも上記の設定が ユーザ環境の .bashrc 等に追加されているはずです。 5.コンパイラのバージョンを使い分ける方法 上記の export 文の中の二つを変更して使い分けます。
● version 5.x 以上のコンパイラの使用の場合は以下のような設定となります。
export PGI=/usr/pgi (v 5.1 コンパイラの場所) export PATH=$PGI/linux86/5.1/bin:$PATH
● version 4.x のコンパイラの使用の場合は以下のような設定となります。 export PGI=/usr/pgi412 (v 4.1-2 コンパイラの場所) export PATH=$PGI/linux86/bin:$PATH
(注意)4.x と 5.x の場合のPATHの設定の記述が異なることに注意してください。
5.x 以上では、$PGI/linux86/5.1/bin の "5.1" が加わっています。 と言う風に書き換えてから、再度ログインしてください。あるいは、source .bashrc を行います。 このようにログインシェルを書き換え、使用するコンパイラ・バージョンの物理的な場所を PATH で設定 することで使い分けが可能です。 4.1-2 の使用が必要でない場合は、必ず、5.1 の設定に戻して コンパイラをご使用下さい。 6.使用しているコンパイラのバージョンを調べる $ which pgf90 /usr/pgi412/linux86/bin/pgf90 となれば v4.1-2 を見ていることになります $ pgf90 -V x.f pgf90 4.1-2 <--- version が出てきます Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
11. 64ビット Opteron マシンの Linux OS として Fedora Core 3 を使用しましたが、PGI 5.1/5.2 は動作しません。回避方法を教えてください
PGI 5.1-6 並びに PGI 5.2-4 は正式に Fedora Core 3 をサポートしておりません。2005 年 3 月にリリースされました PGI 6.0 バージョンにおいて正式にサポートしています。 PGI 5.1-6 あるいは PGI 5.2-4 を使用する場合、 Fedora Core 3 上で動作させるための修正パッチ・ファイルをご提供いたしますので、以下のインストラクションに従ってインストールをお願いいたします。
修正パッチファイルは、ここからダウンロードしてください。修正パッチファイル(http ダウンロード) : fedora3_patch.tar.gz
一度、PGI 5.1/5.2 をインストールされた方は、再度インストール作業を行っていただきます。
1) 先にダウンロードした PGI 5.1-6/5.2-4 バージョンのアーカイブを使用します。このアーカイブを展開し、提供しましたパッチファイルを
以下の指示に従い、置き換えます。
2) 現在、/usr/pgi 配下に存在する正式ライセンスのバックアップを 別の場所へコピーします。
3) 置き換えた後、 install スクリプトを実行します。
4) 現在、設定済みのライセンス・マネージャ(FLEXlm) 等の再設定は必要ありません。
初めて、Fedora Core 3 上で PGI をインストールする場合は、ダウンロードした PGI 5.1-6/5.2-4 バージョンのアーカイブのファイルの一部を以下のように置き換えてからインストールを行い、インストールの手引きを参考に
FLEXlm ライセンスマネージャの設定を行ってください。
以下の具体的な手続きは、一度 PGI コンパイラをインストールした場合に対する回避方法を述べています。PGI 5.1-6 の場合は、以下の5.2 と言うディレクトリ名を 5.1 に読み替えて実行してください。また、PGI 32ビット専用コンパイラの場合は、以下の linux86-64 のディレクトリ名を linux86
と読み替えてください。(linux86 に係るものだけの処理で構いません)
0) ルート権限に移行する。そして、現在動作している FLEXlm ライセンスマネージャ(lmgrd)を停止する。 以下のコマンドで停止する。 $ /usr/pgi/linux86-64/5.2/bin/lmgrd.rc stop lmgrd が動作しているかどうかは以下のコマンドで確認できる。 $ ps -efw | grep lmgrd 1) 現在の正式ライセンスを別の場所(例えば、/tmp)へコピーする。 $ cp /usr/pgi/license.dat /tmp/license.dat 2) 現在、/usr/pgi 配下にインストールした PGI ソフトウェアを一挙に消去する。 $ cd /usr $ rm -rf pgi (他の directory を指定しないよう慎重に消去してください) 3) 弊社からダウンロードしたPGI 5.2-4の linux86-64.tar.gz を /tmp 直下配下に置く。 (新規インストールの場合は、ここから始めてください) $ cd /tmp $ mkdir PGI (インストール用の暫定 directory :後で消去して構わない) $ cd PGI $ tar xzvf ../linux86-64.tar.gz (展開する) 4) パッチ fedora3_patch.tar.gz ファイルを /tmp 下に移動し、パッチ用の directory を作成する。 $ cd /tmp $ mkdir patch $ cd patch $ tar xzvf ../fedora3_patch.tar.gz 展開しますと、現 5.2-4 を置き換えるためのファイル(パッチ)が現れます。 5) パッチファイルを 先ほど展開したインストール用のソースファイル(/tmp/PGI) 配下の一部と 置き換える。 $ cd /tmp/patch 以下の二つを置き換えてください。 $ cp makelocalrc_fedora3 /tmp/pgi/linux86/5.2/bin/makelocalrc 6) この後、PGI の install スクリプトの実行を行っていただきます。 $ cd /tmp/PGI $ ./install (インストール手続きは以前と同じ方法です、手引書とおり) なお、PGIをインストールする場所は、デフォルトの /usr/pgi 配下とします。 7) インストール終了後、正規ライセンスを戻す。 $ mv /tmp/license.dat /usr/pgi/license.dat 8) その他のパッチファイルを正規のインストール場所へコピーする(上書きする)。 $ cp /tmp/patch $ cp float.h /usr/pgi/linux86-64/5.2/include/float.h $ cp float.h /usr/pgi/linux86/5.2/include/float.h $ cp limits_64.h /usr/pgi/linux86-64/5.2/include/limits.h $ cp limits_32.h /usr/pgi/linux86/5.2/include/limits.h $ cp types_sys.h /usr/pgi/linux86-64/5.2/include/sys/types.h $ cp types_sys.h /usr/pgi/linux86/5.2/include/sys/types.h $ mkdir /usr/pgi/linux86-64/5.2/include/bits $ chnmod 755 /usr/pgi/linux86-64/5.2/include/bits $ cp types_bits.h into /usr/pgi/linux86-64/5.2/include/bits/types.h $ cp types_bits.h into /usr/pgi/linux86/5.2/include/bits/types.h 9) ライセンスマネージャを再起動する(手動再起動) 新規にインストールする場合は、「インストールの手引き」に従って正規ライセンスの取得と ライセンスマネージャ(lmgrd) の設定を行ってください。 $ /usr/pgi/linux86-64/5.2/bin/lmgrd.rc start
12. Gaussian 03 用のコンパイラとして PGI 5.1-6 が指定されているのですが、そのソフトウェアの入手方法を教えてください
Gaussian 03 用の正式コンパイラは、現在 PGI 5.1-6 となっております。このバージョンのソフトウェアをダウンロードしたい場合は、米国 PGI 社のソフトウェア・アーカイブから入手していただきますが、詳しくはこちらのページをご覧ください。
13. RedHat Enterprise Linux (AMD64/EM64T)上で 32ビットのコンパイラ環境が構築されていません
(2011年8月補筆)
Red Hat 6.0 ,CentOS 6.0, Scientific Linux 6.0 上で必要とされる GNU ソフトウェアの実装方法に関しては、#18 の記事をご参照下さい。
AMD64/EM64T システム上でデフォルトの64ビットコンパイル環境を使用している際には問題なく動作するのですが、32ビット用の実行モジュールを生成しようとしてクロスコンパイル(コンパイルオプション -tp p7 あるいは -tp -k8-32)を行うと、32ビットのコンパイル環境が存在しないというメッセージで、コンパイルできない場合があります。
これは、Linux システムに gcc の32 ビットのコンパイル環境(gcc-32、g77-32、ライブラリ)が実装されていない状況で、PGI のインストールを行ったことに原因があります。再度、現在のLinux システムに32 ビットのコンパイル環境を追加インストールしてから、PGIコンパイラを再インストールしてください。以下の手順で行います。
● 現在のLinux システムにPGI の32 ビットのコンパイル環境が存在しないことを確認する
PGI をインストールした場所(デフォルトは /usr/pgi、あるいは/opt/pgi )に移動して、linux86 と言う dirctory が存在しなければ、 32bitのコンパイル環境がインストールされていないと言うことになります。以下の説明では、インストールした場所のデフォルトを /usr/pgi として記述します。PGI 6.x 以降は、デフォルトが /opt/pgi に変更になっております。
$ cd /usr/pgi
$ ls
INSTALL.txt PGIinstall SUBSCRIPTION_SERVICE index.htm license.dat license.inf
linux86/ linux86-64/
● RedHat Enterprise Linuxで必要な32bit用のパッケージを追加する
ルート権限で、Red Hatアイコンメニュをクリックし、「System Settings」→「Add/Remove Applications(アプリケーションの追加)」を実行します。この中で、「Compatibility
Arch Development Support」 と 「Legacy Software Development」 のチェックボックスをオン(左脇ボックスをクリック)にします(以下の図を参照)。なお、「Development Tools」はすでに実装されているはずですので、チェックされているかの確認をしてください。これらのパッケージは、32bitソフトウェア環境の生成に必要となります。

● パッケージを追加して、システムを更新する
Updateをクリックし、選択したパッケージをインストールします。その際、画面に表示される指示に従って、CDの入れ替え等を行い、パッケージをインストールしてください。
● PGI ソフトウェアを再度インストールする
PGI (32bit/64bit 共用)ソフトウェアを再度、インストールしてください。その場合は、 /usr/pgi/license.dat のみを別の場所に退避(バックアップ)して、 /usr/pgi に対しての上書きインストールで構いません。
インストールした後に、 ls /usr/pgi コマンドで、 linux86 ディレクトリが存在することを確認してください。
以下の画面例は、Fedora Core 6、 CentOS 5.0 等の「パッケージマネージャ」でパッケージ管理をする際の例です。「開発」と言う項目では、少なくとも、「レガシーなソフトウェアの開発」、「開発ツール」、「開発ライブラリ」を選択してください。

(補足情報)
14. Gaussian03 Rev. C02用のコンパイラとしてPGI 5.1-6が指定されています。SUSE 10.0等(GCC 4.0以降)の Linux上で、このバージョンをインストールできません。正しくインストールする方法を教えてください
Gaussian Inc. が指定する Gaussian03 Rev. C02用の正式コンパイラは、PGI 5.1-6 となっております。また、2005年12月にリリースされた Gaussian03 Rev. D01 においては、それをサポートするコンパイラは、PGI 6.0-5 となっております。
PGI 5.1-6 を SUSE 10.0 / Fedora Core 4 / RedHat Enterprise Linux 4 等の最新の
Linux Distribution 上でインストールする場合、インストール時に以下のメッセージを出力し、正常にインストールできません。この理由は、PGI 5.1-6 のリリース当時(2003年)において、これらの Linux distributions は発売されていなかったことによるものです。
最新の Linux Distribution 上で、PGI 5.1-6 をインストールするためには、ダウンロードした PGI ソフトウェアの一部のファイルを修正する必要があります。ここでは、その方法について説明いたします。 但し、ご注意いただきたいことは、PGI 5.1-6 は、これらの最新 Linux Distributions を正式サポートしていませんので、この OS 下でのコンパイル・実行時のトラブル等に関しまして、サポートできない場合があることを予めご了承ください。
【正常にインストールされない場合のメッセージ】
(前略) Installation directory? [/usr/pgi] Installing software into /usr/pgi (this may take some time). ############################################# dirname: missing operand Try `dirname --help' for more information.
【対処の方法】
この方法は、 PGI 32bit 専用製品(linux86.tar.gz)、PGI 32bit/64bit 共用製品(Linux86-64.tar.gz)共に共通です。
① PGI 5.1-6 ソフトウェアをダウンロードする。ダウンロードは、こちらへ。
② ダウンロードしたファイルを /tmp 配下に移動する。( /tmp/linux86.tar.gz あるいは、
/tmp/linux86-64.tar.gz
)
③ インストール時に使用する修正ファイル makelocalrc51.gz ファイルを弊社から提供します。
このファイルを入手し、/tmp 配下にコピーする。弊社の support@softek.co.jp までその旨、
メールをお送りください。修正ファイルをお送りします。
④ ルート権限で、/tmp ディレクトリ上に、インストールに使用する暫定のディレクトリ PGI を作成する。
$ cd /tmp $ gzip -d makelocalrc51.gz (makelocalrc51 ファイルに解凍) $ mkdir PGI $ cd PGI $ tar zxvf ../linux86-64.tar.gz (PGI 5.1-6 ソフトウェアを展開する) 【32bit用ソフトウェアの一部を修正 (32bit 専用製品、32bit/64bit共用製品共に以下を行うこと)】 $ cd linux86/5.1/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc51 makelocalrc 【64bit用ソフトウェアの一部を修正(32bit/64bit共用製品のみ以下を行うこと)】 $ cd /tmp/PGI/linux86-64/5.1/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc51 makelocalrc (修正終了) 【PGI 5.1 インストールの実行】 $ cd /tmp/PGI $ ./install (これ以降は一般的なPGIのインストール方法と同じです) インストール終了後、/usr/pgi/linux86-64配下に 5.1 と言うサブディレクトリが出来たことを確認
以上で PGI 5.1-6 のインストールが終了です。なお、出来る限り、お客様がライセンスを受けている PGI の最新バージョンをインストールして、そのバージョンの正常動作が確認されてから、旧バージョン
5.1 をインストールすることをお勧めします。(もちろん、単独で 5.1 だけをインストールして使用することも問題があるわけではありません)
旧バージョンのコンパイラの使い分け方法に関しては、こちらをご覧ください。
15. SUSE 10.0等(GCC 4.0以降)のLinux上で、PGI 5.2-4バージョンをインストールできません。正しくインストールする方法を教えてください
PGI 5.2-4 を SUSE 10.0 / Fedora Core 4 / RedHat Enterprise Linux 4 等の最新の Linux Distribution 上でインストールする場合、インストール時に以下のメッセージを出力し、正常にインストールできません。この理由は、PGI 5.2-4 のリリース当時(2004年初頭)において、これらの Linux distributions は発売されていなかったことによるものです。
最新の Linux Distribution 上で、PGI 5.2-4 をインストールするためには、ダウンロードした PGI ソフトウェアの一部のファイルを修正する必要があります。ここでは、その方法について説明いたします。但し、ご注意いただきたいことは、PGI 5.2-4 は、これらの最新 Linux Distributions を正式サポートしていませんので、この OS 下でのコンパイル・実行時のトラブル等に関しまして、サポートできない場合があることを予めご了承ください。
【正常にインストールされない場合のメッセージ】
(前略) Installation directory? [/usr/pgi] Installing software into /usr/pgi (this may take some time). ############################################# dirname: missing operand Try `dirname --help' for more information.
【対処の方法】
この方法は、 PGI 32bit 専用製品(linux86.tar.gz)、PGI 32bit/64bit 共用製品(Linux86-64.tar.gz)共に共通です。
① PGI 5.2-4 ソフトウェアをダウンロードする。ダウンロードは、こちらへ。
② ダウンロードしたファイルを /tmp 配下に移動する。( /tmp/linux86.tar.gz あるいは
/tmp/linux86-64.tar.gz
)
③ インストール時に使用する修正ファイル makelocalrc52.gz ファイルを弊社から提供します。
このファイルを入手し、/tmp 配下にコピーする。弊社の support@softek.co.jp までその旨、
メールをお送りください。修正ファイルをお送りします。
④ ルート権限で、/tmp ディレクトリ上に、インストールに使用する暫定のディレクトリ PGI を作成する。
$ cd /tmp $ gzip -d makelocalrc52.gz (makelocalrc52 ファイルに解凍) $ mkdir PGI $ cd PGI $ tar zxvf ../linux86-64.tar.gz (PGI 5.2-4 ソフトウェアを展開する) 【32bit用ソフトウェアの一部を修正 (32bit 専用製品、32bit/64bit共用製品共に以下を行うこと)】 $ cd linux86/5.2/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc52 makelocalrc 【64bit用ソフトウェアの一部を修正(32bit/64bit共用製品のみ以下を行うこと)】 $ cd /tmp/PGI/linux86-64/5.2/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc52 makelocalrc (修正終了) 【PGI 5.2 インストールの実行】 $ cd /tmp/PGI $ ./install (これ以降は一般的なPGIのインストール方法と同じです) インストール終了後、/usr/pgi/linux86-64 配下に 5.2 と言うサブディレクトリが出来たことを確認
以上で PGI 5.2-4 のインストールが終了です。なお、出来る限り、お客様がライセンスを受けている PGI の最新バージョンをインストールして、そのバージョンの正常動作が確認されてから、旧バージョン 5.2 を追加インストールすることをお勧めします。(もちろん、単独で 5.2 だけをインストールして使用することも問題があるわけではありません)
旧バージョンのコンパイラの使い分け方法に関しては、こちらをご覧ください。
15-1 SUSE 10.2、Fedora Core 6等(glibc 2.5以降)のLinux上で、PGI 6.2 バージョンをインストールできません。正しくインストールする方法を教えてください
PGI 6.2 を SUSE 10.2/ SUSE Linux Enterprise 10 / Fedora Core 6 / RedHat Enterprise Linux 5 等の Linux Distribution 上でインストールする場合、インストール時に以下のメッセージを出力し、正常にインストールできません。この理由は、PGI 6.2 のリリース当時(2006年9月)において、これらの Linux distributions は発売されていていなかったことによるものです。
上記の glibc 2.5 を有する Linux Distribution 上で、PGI 6.2 をインストールするためには、ダウンロードした PGI ソフトウェアの一部のファイルを修正する必要があります。ここでは、その方法について説明いたします。但し、ご注意いただきたいことは、PGI 6.2 は、これらの最新 Linux Distributions を正式サポートしていませんので、この OS 下でのコンパイル・実行時のトラブル等に関しまして、サポートできない場合があることを予めご了承ください。
【正常にインストールされない場合のメッセージ】
(前略) Installation directory? [/usr/pgi] Installing software into /usr/pgi (this may take some time). ############################################# ERROR: unknown glibc version (2.5). ERROR: unknown glibc version (2.5). 以下、略
【対処の方法】
この方法は、 PGI 32bit 専用製品(linux86.tar.gz)、PGI 32bit/64bit 共用製品(Linux86-64.tar.gz)共に共通です。
① PGI 6.2-5 ソフトウェアをダウンロードする。ダウンロードは、こちらへ。
② ダウンロードしたファイルを /tmp 配下に移動する。( /tmp/linux86.tar.gz あるいは、
/tmp/linux86-64.tar.gz
)
③ インストール時に使用する修正ファイル makelocalrc62_glibc25 ファイルの内容をコピーして、
/tmp 配下に置く。
④ ルート権限で、/tmp ディレクトリ上に、インストールに使用する暫定のディレクトリ PGI を作成する。
$ cd /tmp $ (/tmp配下に makelocalrc62_glibc25をコピーする) $ mkdir PGI $ cd PGI $ tar zxvf ../linux86-64.tar.gz (PGI 6.2-5 ソフトウェアを展開する) 【32bit用ソフトウェアの一部を修正 (32bit 専用製品、32bit/64bit共用製品共に以下を行うこと)】 $ cd linux86/6.2/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc62_glibc25 makelocalrc 【64bit用ソフトウェアの一部を修正(32bit/64bit共用製品のみ以下を行うこと)】 $ cd /tmp/PGI/linux86-64/6.2/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc62_glibc25 makelocalrc (修正終了) 【PGI 6.2 インストールの実行】 $ cd /tmp/PGI $ ./install (これ以降は一般的なPGIのインストール方法と同じです) インストール終了後、/usr/pgi/linux86-64 配下に 6.2 と言うサブディレクトリが出来たことを確認
以上で PGI 6.2 のインストールが終了です。なお、出来る限り、お客様がライセンスを受けている PGI の最新バージョンをインストールして、そのバージョンの正常動作が確認されてから、旧バージョン 6.2 を追加インストールすることをお勧めします。(もちろん、単独で 6.2 だけをインストールして使用することも問題があるわけではありません)
旧バージョンのコンパイラの使い分け方法に関しては、こちらをご覧ください。
15-2 SUSE 10.2、Fedora Core 6等(glibc 2.5以降)のLinux上で、PGI 6.1 バージョンをインストールできません。正しくインストールする方法を教えてください
PGI 6.1 を SUSE 10.2/ SUSE Linux Enterprise 10 / Fedora Core 6 / RedHat Enterprise Linux 5 等の Linux Distribution 上でインストールする場合、インストール時に以下のメッセージを出力し、正常にインストールできません。この理由は、PGI 6.1 のリリース当時(2006年2月)において、これらの Linux distributions は発売されていていなかったことによるものです。
上記の glibc 2.5 を有する Linux Distribution 上で、PGI 6.1 をインストールするためには、ダウンロードした PGI ソフトウェアの一部のファイルを修正する必要があります。ここでは、その方法について説明いたします。但し、ご注意いただきたいことは、PGI 6.1 は、これらの最新 Linux Distributions を正式サポートしていませんので、この OS 下でのコンパイル・実行時のトラブル等に関しまして、サポートできない場合があることを予めご了承ください。
(追記:2007/7/3)
以下の修正ファイル makelocalrc61_glibc25 は、SUSE10.1/Fedora Core 5 等の glibc 2.4 をサポートしている Linux システムに対しても対応できるため、 glibc 2.4 をサポートしていない、PGI 6.0, PGI 5.2 バージョンのソフトウェアインストールにおいて、下記と同様な方法で対処できます。ただし、全ての動作を保証することはできませんので予めご了承ください。
【正常にインストールされない場合のメッセージ】
(前略) Installation directory? [/usr/pgi] Installing software into /usr/pgi (this may take some time). ############################################# ERROR: unknown glibc version (2.5). ERROR: unknown glibc version (2.5). 以下、略
【対処の方法】
この方法は、 PGI 32bit 専用製品(linux86.tar.gz)、PGI 32bit/64bit 共用製品(Linux86-64.tar.gz)共に共通です。
① PGI 6.1-6 ソフトウェアをダウンロードする。ダウンロードは、こちらへ。
② ダウンロードしたファイルを /tmp 配下に移動する。( /tmp/linux86.tar.gz あるいは、
/tmp/linux86-64.tar.gz
)
③ インストール時に使用する修正ファイル makelocalrc61_glibc25 ファイルの内容をコピーして、
/tmp 配下に置く。
④ ルート権限で、/tmp ディレクトリ上に、インストールに使用する暫定のディレクトリ PGI を作成する。
$ cd /tmp $ (/tmp配下に makelocalrc61_glibc25をコピーする) $ mkdir PGI $ cd PGI $ tar zxvf ../linux86-64.tar.gz (PGI 6.1-6 ソフトウェアを展開する) 【32bit用ソフトウェアの一部を修正 (32bit 専用製品、32bit/64bit共用製品共に以下を行うこと)】 $ cd linux86/6.1/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc61_glibc25 makelocalrc 【64bit用ソフトウェアの一部を修正(32bit/64bit共用製品のみ以下を行うこと)】 $ cd /tmp/PGI/linux86-64/6.1/bin $ cp makelocalrc makelocalrc.org $ cp /tmp/makelocalrc61_glibc25 makelocalrc (修正終了) 【PGI 6.1 インストールの実行】 $ cd /tmp/PGI $ ./install (これ以降は一般的なPGIのインストール方法と同じです) インストール終了後、/usr/pgi/linux86-64 配下に 6.1 と言うサブディレクトリが出来たことを確認
以上で PGI 6.1 のインストールが終了です。なお、出来る限り、お客様がライセンスを受けている PGI の最新バージョンをインストールして、そのバージョンの正常動作が確認されてから、旧バージョン 6.1を追加インストールすることをお勧めします。(もちろん、単独で 6.1 だけをインストールして使用することも問題があるわけではありません)
旧バージョンのコンパイラの使い分け方法に関しては、こちらをご覧ください。
16 PGI 6.1以降のコンパイラを OpenSUSE10.0/10.1/10.2/10.3/11 上でインストールしたいのですが、この distribution には GNU の Fortran パッケージが含まれていません。これをインストールする方法がありますか
2007年4月 : アップデート(g77/gfortranに関して補筆)
2009年1月 : OpenSUSE 11.x 対応追加
PGI コンパイラは、 GNU の g77 あるいはgfortran のパッケージの中のライブラリを利用するため、gcc-g77 あるいは、gcc-fortran (gfortran) がシステム上にインストールされている必要があります。2006年1月現在、最新の Linux Distribution は、従来の 32bit 版のパッケージを compat-g77 と称し、Fortran95(gfortran) に対応するものを gcc-fortran パッケージと称するようになりました。 gcc-fortran は 64bit 対応のものと 32bit 対応のものが二つ存在しますが、実装依存により、gcc-fortran のパッケージインストールだけで、32ビット、64ビット対応のものがインストールされる場合もあります。 (64bit Linux の場合は、両方インストールされている必要があります)
GCC 4.0以降を含む、新しい Linux distribution の場合は、gcc-fortran のインストールのみで結構です。各 Linux distribution に含まれる GCC のバージョンは、こちらのページにまとめております。
OpenSUSE10.0/10.1/10.2 /10.3 の distribution の中には、2007年4月現在においても Fortran 関係のパッケージが含まれておりません。それに対して、商用版の SUSE10.0/10.1(10.2は未確認) には含まれており、インストール時に Fortran パッケージを選択すればメディアからインストールすることが可能です。ここでは、OpenSUSE10.0/10.1/10.2/ 10.3 をご利用なさりたいお客様へに対しての不足している「GNU Fortran パッケージ」の導入方法について説明します。但し、現在、商用版であるSUSE10.0/10.1/10.2 は、動作検証は行われて正式にサポートしておりますが、OpenSUSE10.0/10.1 に関しては正式なサポートOS になっておりませんので、予めご了承ください。また、以下に述べたもの以外の細かな OS に関する設定方法に関しては、サポートの範囲外のため、サポートできかねる場合もありますのでご了承ください。
ディストリビューションされている OpenSUSE10.0/10.1/10.2/10.3 をインストールしてください。このインストール終了後に、GNU Fortran パッケージを追加インストールすると言う形で実現します。以下にその方法を示します。

【OpenSUSE 10.0の YaST ユーティリティ画面】
(g77に関する補完説明)
正式には、GNU gcc-g77 プロジェクトは、gcc-4.0 以降解散したため、gfortran プロジェクトへ事実上の移行が行われております。したがって、今後の Linux distribution は、gcc 4.0 以降のパッケージで提供する distribution は、g77パッケージが存在しないものがあります。2007年4月現在、SUSE Enterprise Server 10 (gcc 4.1.0)は、g77パッケージのサポートがありません。一方、Fedora Core 6 (gcc 4.1.1) では、32bit 対応の g77 パッケージ(compat-gcc-34-g77-3.4.6-4.i386.rpm) をまだ提供しております。今後は、g77 はフリーズされることとなりますので、PGI コンパイラのインストールの際には、gnu-fortran(gfortran) を予め、Linux システムにインストールしておく必要があります。
1)ルート権限でログインし、デスクトップ上で YaST ユーティリティを開きます。 2)YaSTの機能の中で、「ソフトウェア」と言う大項目があり、そこを選ぶと右にサブメニューが出てきます。 その中の「インストールのソースを変更する」を選びます。こうすると、別の画面が出てきます。 3)「ソフトウェアソースメディア」と言う画面が出て、この中の「追加」と言うボタンを押し、OpenSUSE のソースがある distribution site を指定します。(SUSE 10.3では、「ソフトウェアの管理」と言う名前) OpenSUSE 11.0, 11.1以降では、YaSTの「ソフトウェア」-->「ソフトウェアリポジトリ」で、ダウンロードを 行うリポジトリの設定ができます。これは特に変更する必要がなく、インストール時にデフォルトの設定で 良いでしょう。 openSUSE 10.x の場合は、一例として、以下のサイトを利用します。以下のように入力します。 「HTTP」を選ぶ。 サーバ名 :ftp.jaist.ac.jp サーバ上のディレクトリ:pub/Linux/openSUSE/distribution/SL-10.0-OSS/inst-source/ (10.0の場合) pub/Linux/openSUSE/distribution/SL-10.1/inst-source/ (10.1の場合) 「FTP」の場合(10.2の場合) ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/10.2/repo/oss/ (10.2の場合) OpenSUSE 10.3 「HTTP」を選ぶ。 サーバ名 :download.opensuse.org サーバ上のディレクトリ:distribution/10.3/repo/oss/suse (http://download.opensuse.org/distribution/10.3/repo/oss/suse) 設定が終わったら、「OK」を押し、「完了」を押す。上記の定義した「ソース項目」を「上」に移動する。 これで、上記サイトから足りないモジュールをダウンロードすることが可能となります。 4)次の2)で述べたサブ・メニューの中に「ソフトウェアのインストール/削除」があります。 これを押します。別画面が出てきますので、ここで左の方の上部に「フィルタ」と言うプルダウンメニュー があり、個々の中の「検索」を選びます。検索するワードを入力する部分が出てきますから、 そこに以下のキーワードを入力してください。 「fortran」 そうすると、右の画面に、Fortranに関するモジュール(以下のもの)が表示されますので、表示された 全部のものにチェックを入れてください。(最低限 gfortran をインストールしてください) compat-g77, gcc-fortran, gcc-fortran-32bit, f2c, f2c-32bit 次に、右下にある「了解」のボタンを押してください。 この後、これらのモジュールがシステム内にインストールされます。これで使用可能となります。 openSUSE 11以降では、YaSTの「ソフトウェア」-->「ソフトウェア管理」でパッケージの管理が可能です。 (下図参照) 以上で、全ての Fortran package がインストールされるはずです。この後、PGIのインストールを行ってください。

OpenSUSE 10.2 の YaST "fortran" パッケージ検索画面

OpenSUSE 11.1 の YaST "ソフトウェアの管理" 画面
(補足情報)
17. PGI ソフトウェアを Fedora/Cent OS/Red Hat Enterprise Linux (64bit) 上でインストールしたいのですが、この distribution では 32bit互換の GNU g77 あるいは gfortran がデフォルトでインストールされません。これをインストールする方法がありますか(PGI のバージョンに限らず、Fedora/Cent OS/ Red Hat Enterprise Linux 上での対処法)
※ Red Hat や Cent OS の場合の実装方法は、こちらへ。
PGI コンパイラは、 GNU の g77 のパッケージの中のライブラリを利用するため、g77 (32bit 並びに 64bit) もしくは、gfortran (32bit 並びに 64bit) がシステム上にインストールされている必要があります。2006年1月現在、最新の Linux Distribution は、従来の 32bit 版のパッケージを compat-g77 と称し、Fortran95に対応するものを gcc-fortran(gfortran) パッケージと称するようになりました。 gcc-fortran は 64bit 対応のものと 32bit 対応のものが二つ存在します。
特に、g77 の32bit 用のパッケージは、64bit 対応の Linux 上においてもインストールされている必要があります。これは、64ビット Linux 上で、クロスコンパイル機能を使用して、32bit 互換の実行モジュールを生成する際に必要となります。
ディストリビューションされている Fedora Core 4 (この上位のバージョンも同様です)において、g77 あるいは gfortran 用のパッケージがデフォルトでインストールされていません。 RedHat Enterprise Linux では、後でパッケージをインストールするユーティリティがありますが、 Fedora Core では、これをコマンドベースの yum ユーティリティを使用して行う必要があります(他のGUI ベースの管理ツールもありますが、ここではyumを使用します)。
以下に、g77(32bit/64bit版)をインストールする方法を説明します。但し、使用する 「yum」ユーティリティの設定・使用法に関しては、以下のような別の文献をご利用ください。
【 yum ユーティリティに関するリンク】
・http://linux.kororo.jp/cont/intro/yum.php
・http://cyberam.dip.jp/linux_foundation/proginstall/yum_main.html
・http://www.atmarkit.co.jp/flinux/rensai/linuxtips/672errymfc3.html
なお、ftp/http/https 等の proxy の設定は、明示的に 環境変数で設定した方が良いです。
export ftp_proxy="ftp://proxy.softek.jp:3128"
export http_proxy="http://proxy.softek.co.jp:3128"
あるいは、/etc/yum.confの中に PROXYの設定を行ってもよいです。以下の行を加えます。
PROXY=http://proxy.softek.co.jp:3128/ (一例)
( 2007年 4月 18日 アップデート)
GNU の Fortran 関係の gcc-g77 プロジェクトはすでにフリーズされ、gfortran プロジェクトへ移行しております。PGI Fortranコンパイラにおいて必要な GNU Fortran 系のライブラリは、gcc-g77 パッケージあるいは、gcc-fortran(gfortran) パッケージのどちらかがシステムに実装されていることが必要ですが、g77パッケージがない場合は、 gcc-fortran (gfortran) のパッケージ (32bit 並びに 64bit) をインストールすることで代替できます。詳細につきましては、以下の補足情報の記事をご覧ください。
なお、 Fedora Core 上で yum ユーティリティでインストールする場合は、以下のコマンドで、Fortran を含む GNU GCC 関連パッケージをインストールしてください。(64ビット対応だけでなく、32ビット対応のものもインストールされます)
yum install gcc-gfortran yum install f2c その他、以下のように、gcc 関連のものを全てインストールすると安全です。 yum install gcc* compat-gcc* compat-glibc* compat-lib*
(補足情報)
以下は、Fedora Core 4 当時の 32bit 並びに 64bit の g77 関係で必要となるパッケージ(compat-gcc-32-g77、compat-libf2c-32)を yum ユーティリティでインストールする例を示します。2007年以降の場合は、上記の「アップデート記事」を参考にしてください。
[root@amd64 etc]# yum search g77 (g77 関係のパッケージを探す)
Repository updates-released is listed more than once in the configuration
Repository base is listed more than once in the configuration
Searching Packages:
Setting up repositories
base 100% |=========================| 1.1 kB 00:00
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
compat-gcc-32-g77.x86_64 3.2.3-47.fc4 base
Matched from:
compat-gcc-32-g77
The compat-gcc-32-g77 package provides support for compiling Fortran 77
programs with the GNU Compiler Collection.
[root@amd64 etc]# yum install compat-gcc-32-g77(compat-gcc-32-g77をインストール)
Repository updates-released is listed more than once in the configuration
Repository base is listed more than once in the configuration
Setting up Install Process
Setting up repositories
base 100% |=========================| 1.1 kB 00:00
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for compat-gcc-32-g77 to pack into transaction set.
compat-gcc-32-g77-3.2.3-4 100% |=========================| 5.1 kB 00:00
---> Package compat-gcc-32-g77.x86_64 0:3.2.3-47.fc4 set to be updated
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
compat-gcc-32-g77 x86_64 3.2.3-47.fc4 base 2.0 M
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 2.0 M
Is this ok [y/N]: y
Downloading Packages:
(1/1): compat-gcc-32-g77- 100% |=========================| 2.0 MB 00:04
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: compat-gcc-32-g77 ######################### [1/1]
Installed: compat-gcc-32-g77.x86_64 0:3.2.3-47.fc4
Complete!
[root@amd64 etc]# g77(g77 コマンドが使えるか確認する)
g77: no input files
[root@photon26 etc]# yum search libf2c (g77 の互換ライブラリ f2c もインストールするため探す)
Repository updates-released is listed more than once in the configuration
Repository base is listed more than once in the configuration
Searching Packages:
Setting up repositories
base 100% |=========================| 1.1 kB 00:00
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 777 kB 00:00
extras : ################################################## 2191/2191
Added 19 new packages, deleted 390 old in 1.55 seconds
compat-libf2c-32.x86_64 3.2.3-47.fc4 base
Matched from:
compat-libf2c-32
compat-libf2c-32.i386 3.2.3-47.fc4 base
Matched from:
compat-libf2c-32
compat-libf2c-32.i386 3.2.3-47.fc4 installed
Matched from:
compat-libf2c-32
[root@amd64 etc]# yum install compat-libf2c-32 (compat-libf2c-32をインストール)
Repository updates-released is listed more than once in the configuration
Repository base is listed more than once in the configuration
Setting up Install Process
Setting up repositories
base 100% |=========================| 1.1 kB 00:00
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package compat-libf2c-32.x86_64 0:3.2.3-47.fc4 set to be updated
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
compat-libf2c-32 x86_64 3.2.3-47.fc4 base 54 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 54 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): compat-libf2c-32-3 100% |=========================| 54 kB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: compat-libf2c-32 ######################### [1/1]
Installed: compat-libf2c-32.x86_64 0:3.2.3-47.fc4
Complete!
● Red Hat Cent OS、Fedoraの「パッケージマネージャ」を利用してインストールする
以下の画面は、Fedora、 CentOS、Red Hat Enterprise Linux 等の「パッケージマネージャ」でパッケージ管理をする際の例です。ルート権限でのプルダウンメニューの名前としては、「ソフトウェアの追加と削除」を実行すると以下のような「パッケージマネージャ」が開きます。「ブラウズ」モードで、「開発」を選び、右のサブウインドウに、各カテゴリが表示されます。この中で、以下のものをインストールしておけば、ほとんどの場合、32ビット環境のGCC
ソフトウェア( Fortran を含む)と64ビット環境の GCC ソフトウェアが実装できます。
2010年12月現在のRed Hat 系の Linux distribution では、32ビットのソフトウェアであるかどうかの判別がファイル名では認識できないような形になっているようです。いずれにしても、上記のカテゴリを実装することで、32bit/64bitのGCCソフトウェアがインストールされるはずです。


18. 64ビット版 Red Hat 6.0 (CentOS 6.0, Scientific Linux 6.0) 以降のシステム上でインストールする際に必要とされる GNU のパッケージ(gcc,gfortran,glibc等)の実装状況の確認方法、あるいはインストールの方法を教えて下さい
2011年10月 : libgcc ライブラリについて補足
2011年8 月 : Red Hat 6.0 (CentOS 6.0, Scientific Linux 6.0) 用初稿
PGI コンパイラ製品は、GNU collection に含まれる gcc,gfortran,glibc 等ソフトウェアをコンパイラの基盤ソフトウェアとして使用します。Red Hat 6.x の 64bit版(x86-64) のデフォルトの GNU ソフトウェアは、一般に、64ビット版の GNU ソフトウェア環境のみ実装されており、32ビット(クロス)環境の GNU ソフトウェアは、実装されておりません。従って、GNU gcc コンパイラ等で、32ビット用の実行バイナリを作成するための「クロスコンパイル環境」は使用できません。もちろん、そもそも 64bit Linux 用途の環境なので、32ビット用のクロス開発環境が必要ないと言う場合は、このデフォルトの状態、すなわち 64bit GNU 環境だけ、PGI コンパイラ環境を構築することもできます。この場合は、PGI の 32bit クロスコンパイル用のコンパイラ・ソフトウェアは実装されずに、64bit の PGI コンパイラ環境のみがインストール・実装されます。 PGI のインストーラは、GNUの 32bit用ソフトウェア環境がシステム内に実装されているかどうかを確認し、実装されていたならば PGI の 32bit コンパイラ・ソフトウェアも実装するようにしております。
この記事では、 Red Hat 6.x ( CentOS 6.x, Scientific Linux 6.x ) 上で、GNU の 32bit/64bit のパッケージの実装状況を確認する方法と、不足したパッケージがある場合は、 そのインストール方法を説明します。Red Hat の「システム管理」の中の「ソフトウェアの追加・削除」による「パッケージマネージャ」では、32ビット用の GNU ソフトウェアが見つからない場合がありますので、 以下の方法では、全て rpmコマンドと yum utility を使用して、実装する方法をご紹介します。
yum utility を使用する場合は、必ず、 PROXY の設定を行って下さい。 yum に関しては、上記の記事(#17)にて説明していますので、これを参考に前準備をしてください。
現在の GNU collectionのインストール済みパッケージの状況を確認します。以下は、root 権限で行います。また、以下の例は、CentOS の場合のパッケージ名となりますので、RedHat の場合は、多少異なるかもしれません。
● glibcパッケージ確認の前に、基本 gcc ライブラリが実装されているかを確認 [root@photon30 ~]# yum search libgcc Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile * base: centos.mirror.cdnetworks.com * centosplus: centos.mirror.cdnetworks.com * extras: centos.mirror.cdnetworks.com * updates: centos.vr-zone.com ====================== Matched: libgcc =============================== libgcc.i686 : GCC version 4.4 shared support library 32bit用 libgcc.x86_64 : GCC version 4.4 shared support library 64bit用 上記の二つが存在することを確認、未実装ならば、以下のコマンドでインストール [root@photon30 ~]# yum install libgcc Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile * base: centos.mirror.cdnetworks.com * centosplus: centos.mirror.cdnetworks.com * extras: centos.mirror.cdnetworks.com * updates: centos.vr-zone.com Setting up Install Process Package libgcc-4.4.4-13.el6.x86_64 already installed and latest version Nothing to do(インストール済みのためアクションは無し) ● glibc パッケージのインストール状況を見る [root@photon30]# rpm -qa | grep glibc |sort glibc-2.12-1.7.el6_0.5.i686 glibc-2.12-1.7.el6_0.5.x86_64 glibc-common-2.12-1.7.el6_0.5.x86_64 glibc-devel-2.12-1.7.el6_0.5.x86_64 glibc-headers-2.12-1.7.el6_0.5.x86_64 "i686"の suffix 付きは 32bitのパッケージであることを意味します。 上記で足りないのは、glibc-devel-2.12-1.7.el6_0.5.i686と言う パッケージです。これが gcc/gfortran で -m32 オプションでコンパイル したとき リンク時に crt1.o が存在していないと言う問題の原因と なります。以降作業は、glibc-devel-2.12-1.7.el6_0.5.i686を インストールすることを目標とします。 他に gfortran と gcc についても query しておきます。 以下のようなモジュールがインストールされていれば、問題ないと 思います。以下のモジュールには、"i686"と言う suffix 付きの ものはありません。現在は、gcc -m32 or -m64 と言うオプションで 32bit or 64bit の実行モジュールを作成するようになっていますので、 gcc/gfortran のコマンド用のモジュールは、gcc-gfortran-4.4.4-13.el6.x86_64 と言ったように x86_64用の一つに統一されています。 [root@photon30]# rpm -qa | grep gfortran |sort gcc-gfortran-4.4.4-13.el6.x86_64 libgfortran-4.4.4-13.el6.x86_64 [root@photon30]# rpm -qa | grep gcc |sort gcc-4.4.4-13.el6.x86_64 gcc-c++-4.4.4-13.el6.x86_64 gcc-gfortran-4.4.4-13.el6.x86_64 libgcc-4.4.4-13.el6.i686 これも必要です。 libgcc-4.4.4-13.el6.x86_64 さて、ここからが yum で実装するステップです。 yum の実行時には、必ず、端末セッションにproxy の設定を行って下さい。 (例) # export ftp_proxy=ftp://proxy.softek.jp:3128 # export http_proxy=http://proxy.softek.co.jp:3128 glibc-develと言うパッケージを探します。 [root@photon30]# yum search glibc-devel Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile * base: centos.mirror.cdnetworks.com * centosplus: centos.mirror.cdnetworks.com * extras: centos.mirror.cdnetworks.com * updates: centos.mirror.cdnetworks.com ============================= Matched: glibc-devel =========================== glibc-devel.i686 : Object files for development using standard C libraries. glibc-devel.x86_64 : Object files for development using standard C libraries. すると、glibc-devel.i686 と glibc-devel.x86_64 の二つが存在することが 分かります。それでは、glibc-devel.i686をインストールします。 [root@photon30 ~]# yum install glibc-devel.i686 Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile * base: centos.mirror.cdnetworks.com * centosplus: centos.mirror.cdnetworks.com * extras: centos.mirror.cdnetworks.com * updates: centos.mirror.cdnetworks.com base | 3.7 kB 00:00 centosplus | 3.5 kB 00:00 contrib | 951 B 00:00 extras | 951 B 00:00 updates | 3.5 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package glibc-devel.i686 0:2.12-1.7.el6_0.5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================== Package Arch Version Repository Size ============================================================================== Installing: glibc-devel i686 2.12-1.7.el6_0.5 updates 961 k Transaction Summary ============================================================================== Install 1 Package(s) Upgrade 0 Package(s) Total download size: 961 k Installed size: 953 k Is this ok [y/N]: y Downloading Packages: glibc-devel-2.12-1.7.el6_0.5.i686.rpm | 961 kB 00:25 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : glibc-devel-2.12-1.7.el6_0.5.i686 1/1 Installed: glibc-devel.i686 0:2.12-1.7.el6_0.5 Complete! 以上で、実装が完了しました。rpm で確認します。 [root@photon30 ~]# rpm -qa | grep glibc |sort glibc-2.12-1.7.el6_0.5.i686 glibc-2.12-1.7.el6_0.5.x86_64 glibc-common-2.12-1.7.el6_0.5.x86_64 glibc-devel-2.12-1.7.el6_0.5.i686 <===== 追加された32bit用ライブラリ glibc-devel-2.12-1.7.el6_0.5.x86_64 glibc-headers-2.12-1.7.el6_0.5.x86_64 これで、32ビットと64ビットの GNU のライブラリ環境が完備されました。 それでは、テストプログラムを -m32 オプションでコンパイルします。 [root@photon30 tmp]# gfortran -m32 hello-f.f (参照) 正常にコンパイルできました。 それでは、gcc でもテストします。以下のように問題なく、コンパイルできています。 [root@photon30 tmp]# gcc -m32 hello.c [root@photon30 tmp]# ldd a.out linux-gate.so.1 => (0x00aca000) libc.so.6 => /lib/libc.so.6 (0x008c5000) /lib/ld-linux.so.2 (0x008a3000) a.out は32ビットの ELF 32-bit LSB executableとなっています。 [root@photon30 tmp]# file a.out a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped 以上で、GNU/GCC/gfortranの 32bit and 64bit コンパイル環境がシステム内に完備されました。