表示テーマ
AIX compiler — コンパイラを区別する
TL;DR
AIXの cc をGCCと決めつけないでください。IBM XL C/C++とIBM Open XL C/C++でも呼び出しコマンドやオプションが異なります。製品と版を特定してからビルドします。
製品とコマンド
| 製品・対象版 | Cの呼び出しコマンド例 | 注意点 |
|---|---|---|
| IBM XL C/C++ for AIX 16.1.0 | xlc、xlclang | XL系とClang系のフロントエンドを区別する |
| IBM Open XL C/C++ for AIX 17.1.4 | ibm-clang_r | 旧XLの xlc 呼び出しをそのまま使う前提にしない |
| GCC(別途導入済みの場合) | gcc | GCCの版と対象環境に合うマニュアルを参照する |
IBMのXL 16.1.0の説明では xlc と xlclang のフロントエンドが区別されています。Open XL 17.1.4の説明では従来の xlc などは非対応です。
Example
まず環境確認で製品とパスを特定します。次を hello.c として保存します。コードはISO Cの標準ライブラリだけを使います。
c
#include <stdio.h>
int main(void)
{
puts("Hello, AIX");
return 0;
}IBM XL C/C++ for AIX 16.1.0の xlc が導入されている場合の最小例です。
sh
xlc hello.c -o hello
./hellocc が利用するCコンパイラを指すことを確認済みなら、次の形で呼び出せます。cc の名前から製品やC規格モードを判断しないでください。
sh
cc hello.c -o helloコンパイラ固有オプション
GCCの -std=c99、-Wall などをXLの xlc に無条件で渡さないでください。Clangベースの製品でも、GCCとすべてのオプションや既定値が同じとは限りません。
ビルドを揃える
コンパイルとリンクは一貫したドライバと設定で行います。既存ライブラリのビット数やABIとの整合も確認します。このページでは特定環境の既定ビット数や既定規格モードを断定しません。
TODO: 対象AIX実機で製品・版を記録し、上記コードのコンパイルと実行を確認する。警告・規格・32 / 64ビットの具体的なオプションは、対象版を特定してから追記する。