AIX ソースのコンパイル

IBM i へのインストールをサポートする AIX® コンパイラ製品のいずれかをインストールして、PASE for i 環境でプログラムをコンパイルすることができます。

プログラムで AIX インターフェースのみを使用する場合は、 PASE for i用のバイナリー・ファイルを準備するために、必要な AIX ヘッダーを使用してコンパイルし、 AIX ライブラリーとリンクすることができます。 PASE for i は、 AIX システム提供の共有ライブラリーに静的にバインドされたアプリケーションをサポートしないことに注意してください。

PASE for i プログラムは、PowerPC 用の AIX プログラムと構造的に同じです。

PASE for i (オペレーティング・システムのオプション 33) には、コンパイラーは含まれていません。 AIX システムを使用して PASE for i プログラムをコンパイルするか、 PASE for i でのインストールをサポートする AIX コンパイラー製品の 1 つをオプションでインストールして、 PASE for i 環境でプログラムをコンパイルすることができます。

System p プラットフォームでの AIX コンパイラーの使用

PowerPC用の AIX アプリケーション・バイナリー・インターフェース (ABI) と互換性のある出力を生成する AIX コンパイラーおよびリンカーを使用して、 PASE for i プログラムを作成できます。 PASE for i は、PowerPC には存在しない POWER® アーキテクチャー命令を使用するバイナリ ファイルの命令エミュレーション サポートを提供します (キャッシュ管理用の IBM® POWER 命令を除く)。

PASE for i での AIX コンパイラーの使用

IBM i は、 PASE for i 環境で以下の個別に使用可能な AIX コンパイラーのインストールをサポートします。

  • IBM XL C/C++ for AIX
  • IBM XL C for AIX
  • IBM XL Fortran for AIX

これらの製品を使用して、システム上の PASE for i 環境全体で PASE for i アプリケーションを開発、コンパイル、ビルド、および実行することができます。

開発ツール

AIX で使用する多くの開発ツール (例えば、ld,ar,make,yacc) PASE for iに含まれています。 他のソースからの多くの AIX ツール (例えば、オープン・ソース・ツール)gcc) PASE for iでも機能します。 オープンソース・ソリューションの詳細については、以下を参照されたい。 http://ibm.biz/ibmi-oss-docs.

ポインターの処理に関するコンパイラーの注意事項

  • このxlcコンパイラーは、以下の組み合わせを使用することにより、16 バイト位置合わせ (long double 型の場合) の制限付きサポートを提供します。-qlngdbl128さらに-qalign=natural. タイプ ILEpointer は、マシン・インターフェース (MI) ポインターが構造内で 16 バイトに位置合わせされるようにするために、これらのコンパイラー・オプションを必要とします。 オプションの使用-qldbl128libc128.a を使用して次のような操作を処理する必要がある long double 型を強制的に 128 ビット型にします。printf長倍精度フィールドの場合。

    オプションを簡単に取得する方法-qlngdbl128libc128.a とのリンクでは、xlc128コマンドの代わりにxlcコマンドで表示されます。

  • このxlc/xlCコンパイラーは現在、静的変数または自動変数に対して 16 バイト位置合わせを強制する方法を提供していません。 このコンパイラーは、 構造内の 128 ビット長倍精度実数フィールドの相対調整を保証するだけです。 PASE for i のバージョンmalloc常に 16 バイトの位置合わせストレージを提供し、スタック・ストレージの 16 バイトの位置合わせを行うことができます。
  • ヘッダー・ファイル as400_types.h もタイプに依存します。long long64 ビット整数になります。xlcコンパイラー・オプション-qlonglongこの形状を確認します (これは、この形状を実行するすべてのコマンドのデフォルトではありません)。xlcコンパイラー)。

以下の例は、 AIX システムで PASE for i プログラムをコンパイルするときに使用するためのものです。 PASE for i にインストールされているコンパイラーを使用してプログラムをコンパイルする場合、 IBM i システム固有ヘッダー・ファイルまたは IBM i システム固有エクスポートのロケーションに対してコンパイラー・オプションを指定する必要はありません。これらのファイルは、 IBM i システム上のデフォルト・パス・ロケーション /usr/include/ および /usr/lib/ にあるためです。

例 1

AIX システムで以下のコマンドを実行すると、以下の名前の PASE for i プログラムが作成されます。testpgmlibc.a: によってエクスポートされた IBM i システム固有のインターフェースを使用できます。

xlc -o testpgm -qldbl128 -qlonglong -qalign=natural
         -bI:/mydir/as400_libc.exp testpgm.c

この例では、 IBM i システム固有のヘッダー・ファイルが AIX ディレクトリー /usr/include にコピーされ、 IBM i システム固有のエクスポート・ファイルが AIX ディレクトリー /mydirにコピーされることを想定しています。

例 2

以下の例では、 IBM i システム固有のヘッダーとエクスポート・ファイルが /pase/libにあることを想定しています。

xlc -o as400_test -qldbl128 -qlonglong -qalign=natural -H16
          -l c128
          -I /pase/lib
          -bI:/pase/lib/as400_libc.exp as400_test.c

例 3

以下の例では、同じオプションを使用して例 2 と同じプログラムを作成します。ただし、xlc_rコマンドは、コンパイル済みアプリケーションがスレッド・セーフ・ランタイム・ライブラリーとリンクすることを確認するために、マルチスレッド・プログラムに使用されます。

xlc_r -o as400_test -qldbl128 -qlonglong -qalign=natural -H16
            -l c128
            -I /pase/lib
            -bI:/pase/lib/as400_libc.exp as400_test.c

例では、IBM Db2 for i のコール・レベル・インタフェース (CLI) のサポートに PASE for i を使用している場合、ビルド・コマンドで -bI:/pase/include/libdb400.exp を指定する必要があります。

-bIディレクティブは、コンパイラにパラメータをldコマンドで表示されます。 このディレクティブは、 ライブラリーからエクスポートした記号を含むエクスポート・ファイルが、 アプリケーションによってインポートされるように指定します。