user/pages/08.compilers/04.gnu/docs.ja.md
11aaa693
 ---
 title: GNUコンパイラ
 taxonomy:
     category:
         - docs
 external_links:
     process: true
     no_follow: true
     target: _blank
     mode: active
 published: true
 ---
 
 [toc]
 
 ## 利用環境{#enviroment}
 
 ### 利用できるバージョン・システム{#version}
 
 バージョン | モジュールファイル名 | システムA | システムB/C | システムG | クラウドシステム | 備考
 --- | --- | --- | --- | --- | ---| ---
 12.2.0 | gcc/12.2.0 | + | + | + | + | 2022年11月導入
 8.5.0 | - | + | + | + | + | OS標準
 
 \+ : すべてのユーザが利用可能  
 \- : 利用不可
 
 システムにログインした時点では、IntelコンパイラもしくはNVIDIA HPC SDKコンパイラがデフォルトで利用できるようになっています。以下のようにmoduleコマンドを実行し、コンパイラを切り替えてください。
 
 ```nohighlight
 (システムA、B、C、クラウド)
 $ module switch PrgEnvIntel PrgEnvGCC
 (システムG)
 $ module switch PrgEnvNvidia PrgEnvGCC
 ```
 
 システムにログインした時点で、バージョン8.5.0が使えます。バージョン12.2.0を使いたい場合は、PrgEnvGCC がロードされている状態で、以下のようにmoduleコマンドを実行してください。
 ```nohighlight
 $ module load gcc/12.2.0
 ```
 
 <!--
 GNUコンパイラのバージョンを切り替えたい場合は、PrgEnvGCC がロードされている状態で、以下のようにmoduleコマンドを実行してください。
 
 ```nohighlight
 $ module switch gcc/4.8.2 gcc/4.6.2
 ```
 
 ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は [環境設定](/config) をご覧ください。  
 moduleコマンドの詳細は [Modules](/config/modules) をご覧ください。
 -->
 
 ## コンパイル方法{#usage}
 
 ### コマンド{#command}
 
 言語       |  コマンド      | 実行形式                        
 --------- | --------- | ----------------------------
 Fortran |  gfortran |  gfortran オプション ファイル名
 C |        gcc    |    gcc オプション ファイル名     
 C++ |      g++     |   g++ オプション ファイル名     
 
 ### オプション{#option}
 
 * **主要オプション(並列化、最適化など)**
 
 オプション名                                 |  説明                              
 --------------------------------------- | --------------------------------
 -o _FILENAME_ | オブジェクトファイルの名前を指定します。            
 -mcmodel=medium                         | 2Gbyteを超えるメモリをサポートします。  
 -fopenmp                                |  OpenMP指示子を有効にしてコンパイルします。       
 -O0/-O1/-O2/-O3                        |  最適化のレベルを指定します(デフォルトは-O0)。         
 
 * **メッセージ出力とデバッグのオプション**
 
 オプション名 |  説明                
 ------- | ------------------
 -Wall   | すべての警告メッセージを表示します。
 
 * **Fortran言語固有オプション**
 
 オプション名         |  説明                          
 --------------- | ----------------------------
 -ffixed-form | プログラムが固定形式で記述されていることを指示します。
 -ffree-form    |  プログラムが自由形式で記述されていることを指示します。 
 -pedantic       | Fortran拡張の利用を警告します。      
 -fimplicit-none | 暗黙の型宣言を警告します。               
 
 ## コンパイル例{#sample}
 
 ### 逐次プログラム{#serial}
 
 ```nohighlight
 $ gfortran test.f90    # Fortranの例
 $ gcc test.c           # C言語の例
 $ g++ test.cpp         # C++の例
 $ tssrun ./a.out       # 実行
 ```
 
 ### OpenMPの利用{#openmp}
 
 OpenMPは、プログラムの並列化のためのオープン規格です。
 ソースコードに#pragma ompで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、コンパイラに自動で並列化を行わせることができます。
 
 OpenMPへの指示を書き込んだソースコードをコンパイルするには、-fopenmpオプションをつけます。
 
 ```nohighlight
 $ gcc -fopenmp test.c
 ```
 
 コンパイルしたプログラムを実行する時、-Aオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。
 
 ```nohighlight
 $ tssrun --rsc p=1:t=8:c=8 ./a.out # 並列数8を指定して実行
 ```
 
 ## 利用可能なライブラリ{#library}
 
 ### MPIライブラリ{#mpi_library}
 
 IntelMPIライブラリ、OpenMPIライブラリが利用できます。MPIプログラムのコンパイル、リンク、実行方法については、[IntelMPIライブラリ](/compilers/intelmpi)、 [OpenMPIライブラリ](/compilers/openmpi) をご覧ください。
 
 ## マニュアル{#manual}
 
 * [GCC online documentation](http://gcc.gnu.org/onlinedocs/)
 
 
 ## リンク{#link}
 
 * [GCC, the GNU Compiler Collection](http://gcc.gnu.org/)