各 gxlc および gxlc++ ユーティリティーは、GNU C または C++ コンパイラー・オプションを受け取り、 それを同等の XL C/C++ オプションに変換します。 両方のユーティリティーは、XL C/C++ オプションを使用して xlc または xlC 呼び出しコマンドを作成し、 それを使用して XL C/C++ を呼び出します。 これらのユーティリティーは、GNU C および C++ で以前に開発されたアプリケーション用に作成された Make ファイルを 簡単に再利用するために提供されています。 ただし、XL C/C++ の機能を十分に活用するためには、XL C/C++ 呼び出しコマンドおよびその関連オプションを使用することをお勧めします。
gxlc および gxlc++ のアクションは、構成ファイル gxlc.cfg によって制御されます。XL C または XL C++ に対応する GNU C および C++ オプションは、このファイルに示されています。 すべての GNU オプションに対応する XL C/C++ オプションがあるわけではありません。 gxlc および gxlc++ は、変換されなかった入力オプションについて警告を戻し ます。
gxlc および gxlc++ オプション・マッピングは変更可能です。 gxlc および gxlc++ 構成ファイルへの追加または編集の詳細については、オプション・マッピングの構成を参照してください。
例
Hello World プログラムの C バージョンをコンパイルするために gcc -ansi オプションを使用するには、 以下を使用することができます。
gxlc -ansi hello.c
これは、以下のように変換されます。
xlc -F:c89 hello.c
変換後、このコマンドを使用して XL C コンパイラーを呼び出します。
gxlc および gxlc++ 戻りコード
他の呼び出しコマンドのように、gxlc および gxlc++ はリスト、コンパイルに関 する診断メッセージ、GNU オプションの変換の失敗に関する警告、および戻りコードなどの、出力を戻します。 gxlc または gxlc++ が正常にコンパイラーを呼び出すことができない場合、 戻りコードを以下のいずれかの値に設定します。
関連参照
以下の図は gxlc および gxlc++ 構文を示しています。
>>-+-gxlc---+--+------+--+-----------------------------+--+--------------------+--filename->< '-gxlc++-' +- -v--+ '- -Wx,--xlc_or_xlc++_options-' '-gcc_or_g++_options-' '- -vv-'
以下、説明です:
関連参照
以下のテーブルは、gxlc および gxlc++ が受け取り、変換する GNU C および C++ オプションをリストしています。
リストにない GNU オプションをこれらのユーティリティーへの入力として指定した場合、そのオプションは
無視されるか、またはエラーを生成します。
GNU オプションにマイナス記号がある場合、マイナス記号も gxlc および gxlc++ によって認識され、
変換されます。
その他の GNU オプションはすべて無視され、通知メッセージを発行します。
関連参照
gxlc および gxlc++ ユーティリティーは、構成ファイル gxlc.cfg を使用して 、GNU C および GNU C++ オプションを XL C/C++ オプションに変換します。 gxlc.cfg の各項目は、ユーティリティーが GNU C または GNU C++ オプションを XL C/C++ オプションにマップする方法およびその処理方法を記述しています。
項目は、処理命令用のフラグのストリング、GNU C オプションのストリング、および XL C/C++ オプションのストリングから構成されています。 3 つのフィールドは、空白で分離する必要があります。 項目に最初の 2 つのフィールドのみが含まれ、XL C/C++ オプションのストリングが省略されている場合、2 番目のフィールドの GNU C オプションは、gxlc で認識はされますが無視されます。
# 文字を使用して、構成ファイルにコメントを挿入することができます。 コメントは、独立した行、または項目の最後に記述することができます。
gxlc.cfg の項目には、以下の構文を使用します。
abcd "gcc_or_g++_option" "xlc_or_xlc++_option"
以下、説明です:
ynn* "-finline" "-qinline"
-fno-inline の場合、gxlc はそれを -qnoinline に変換します。
nyn* "-fmyvalue" "-qmyvalue"
このように指定すると、gxlc および gxlc++ はこれらのオプションに値があることを予期します。
例えば、gcc オプション -I- はサポートされていないため、gxlc および gxlc++ で無視する必要があります。 この場合、フラグを i に設定します。項目は以下のようになります。
nni* "-I-"
gxlc および gxlc++ がこのオプションを入力として検出すると、それを処理せず、警告を生成します。
例えば、-fwritable-strings は、両方のコンパイラーによってサポートされ 、-qnoro にマップします。 項目は以下のとおりです。
nnn* "-fwritable-strings" "-qnoro"
また、オプションの範囲をマップする項目を作成することが可能です。 これは、アスタリスク (*) をワイルドカードとして使用することによって 行うことができます。 例えば、gcc -D オプションには、ユーザー定義の名前が必須で、オプションの値を取ることができます。 これは、以下の一連のオプションを持つことができます。
-DCOUNT1=100 -DCOUNT2=200 -DCOUNT3=300 -DCOUNT4=400
このオプションのバージョン毎に項目を作成する代わりに、以下のように単一の項目を作成します。
nnn* "-D*" "-D*"
ここで、アスタリスクは、-D オプションの後に続く任意のストリングに置き換えられます。
逆に、アスタリスクを使用して、指定したオプションの範囲を除外することができます。 例えば、gxlc または gxlc++ ですべての -std オプションを無視する場合、 項目は以下のようになります。
nni* "-std*"
アスタリスクをオプション定義で使用する場合、オプション・フラグ a および b はこれらの項目に適用できません。
GNU C または GNU C++ オプションで文字 % を使用すると、 そのオプションに関連するパラメーターがあることを示します。これは、gxlc または gxlc++ でオプションを無視し、関連するパラメーターも間違いなく無視するために使用されます。例えば、-include オプションはサポートされていません。このオプションにはパラメーターがあります。 アプリケーションでは、オプションとパラメーターの両方を無視する必要があります。 この場合、項目は以下のようになります。
nni* "-include %"
関連参照