ar コマンド
目的
リンケージ・エディターが使う索引付きライブラリーを保守します。
構文
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -h | -p | -t | -x } [ -X {32|64|32_64|d64| any}] ArchiveFile [ File ... ]
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -m | -r [ -u ] } [ { -a | -b | -i } PositionName ] [ -X {32|64|32_64|d64|any}] ArchiveFile File ...
ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -d | -q } [ -X {32|64|32_64|d64|any}] ArchiveFile File ...
ar [ -c ] [ -l ] [ -v ] [ -C ] [ -T ] [ -z ] { -g | -o | -s | -w } [ -X {32|64|32_64|d64|any}] ArchiveFile
説明
ar コマンドは、リンケージ・エディターが使う索引付きライブラリーを保守します。 ar コマンドは、1 つ以上の指定されたファイルを組み合わせて、ar アーカイブ・フォーマットで書かれた単一のアーカイブ・ファイルにします。 ar コマンドは、ライブラリーを作成するときに、移送可能なフォーマットのヘッダーを作成します。また、ライブラリーを作成または更新するときには、記号テーブルを再構築します。 索引付きアーカイブと記号テーブルのフォーマットと構造については、ar ファイル・フォーマット・エントリーのセクションを参照してください。
ar コマンドが認識するファイル・フォーマットは 2 つあります。 ビッグ・アーカイブ・フォーマット ar_big はデフォルトのファイル・フォーマットで、32 ビットと 64 ビットの両方のオブジェクト・ファイルをサポートします。 スモールアーカイブフォーマットは、'-g AIX® 4.3よりも古いバージョンで認識されるアーカイブを作成するために使用することができます。 64 ビット・オブジェクトをスモール・フォーマット・アーカイブに追加する場合は、-g を指定した場合を除き、ar コマンドはまずそれをビッグ・フォーマットに変換します。 デフォルトでは、ar は 32 ビット・オブジェクト・ファイルだけを処理します。 アーカイブの 64 ビット・オブジェクト・ファイルは無視されます。 この動作を変更するには、 -X (X) フラグを使用するか、 オブジェクト・モード 環境変数を設定します。
フラグ
ar コマンドでは、cClosTv セットからオプションのフラグを幾つでも指定できます。 フラグ・セット dhmopqrstwx からは、フラグを 1 つ指定する必要があります。 -m または -r フラグを選択する場合は、位置決めフラグ (-a、-b、または -i) も指定できます。-a、-b、または -i フラグの場合は、ArchiveFile (PositionName) の中のファイルの名前も指定する必要があります。
| 項目 | 説明 |
|---|---|
| -a PositionName | 指定されたファイルを、PositionName パラメーターに指定されている既存のファイルのあとに配置します。 |
| -b PositionName | 指定されたファイルを、PositionName パラメーターに指定されている既存のファイルの前に配置します。 |
| -c | library の作成時に生成される通常メッセージを抑制します。 |
| -C | 抽出されたファイルによってファイルシステム内の類似名のファイルが置換されないようにします。 |
| -d | ライブラリーから指定のファイルを削除します。 |
| -g | アーカイブのメンバーを、未使用スペースの量を最小限にして最大限のローダー効率を確保するような順序で配置します。 ほとんどすべての場合、-g フラグは、アーカイブのメンバーを、論理的にリンクされている順序に従って物理的に配置します。 その結果生成されるアーカイブは常にスモール・フォーマットで書き込まれるので、このフラグを使うことにより、ビッグ・フォーマットのアーカイブをスモール・フォーマットのアーカイブに変換することができます。 64 ビットの XCOFF オブジェクトを含むアーカイブは、スモール・フォーマットで作成したり、スモール・フォーマットに変換したりすることはできません。 |
| -h | 指定のファイルのメンバー・ヘッダー内の修正時刻を、現在の日時に設定します。 ファイル名を指定しなかった場合は、ar コマンドはすべてのメンバー・ヘッダーのタイム・スタンプを設定します。 このフラグは、-z フラグと一緒には使用できません。 |
| -i PositionName | 指定のファイルを、PositionName パラメーターに指定されている既存のファイルの前に配置します (-b と同じ)。 |
| -l | TMPDIR ディレクトリー (デフォルトでは、/tmp) ではなく、現行 (ローカル) ディレクトリーの中に一時ファイルを配置します。 |
| -m | 指定のファイルをライブラリー内の別の位置に移動します。 デフォルトでは、指定のファイルをライブラリーの終わりに移動します。 他の位置を指定するには、位置決めフラグ (abi) を使います。 |
| -o | アーカイブのメンバーを、未使用スペースの量を最小限にして最大限のローダー効率を確保するような順序で配置します。 ほとんどすべての場合、-o フラグは、アーカイブのメンバーを、論理的にリンクされている順序に従って物理的に配置します。 その結果生成されるアーカイブは常にビッグ・アーカイブ・フォーマットで書き込まれるので、このフラグを使うことにより、スモール・フォーマットのアーカイブをビッグ・フォーマットのアーカイブに変換することができます。 |
| -p | Files パラメーターに指定されたファイルの内容を、標準出力に書き出します。ファイルを指定しなければ、ArchiveFile パラメーターに指定されているすべてのファイルの内容が書き出されます。 |
| -q | 指定のファイルをライブラリーの終わりに追加します。 同じファイルを 2 回指定すれば、そのファイルをライブラリーに 2 回入れることができます。 |
| -r | 指定されたファイルが既にライブラリー内にある場合は、そのファイルを置換します。 指定されたファイルは、ライブラリー内で交換対象のファイルと同じ位置を占めるので、
位置決めフラグを使用しても効果はありません。 -u フラグ (更新) と共に -r フラグを使用した場合は、最後にライブラリー・ファイルに追加された後で修正されたファイルだけを置換します。 指定されたファイルがライブラリー内にないときは、ar コマンドはそのファイルを追加します。 この場合は、位置決めフラグにより配置が変化します。 位置を指定しなければ、新しいファイルはライブラリーの終わりに追加されます。 同じファイルを 2 回指定すると、そのファイルをライブラリーに 2 回入れることができます。 |
| -s | ar コマンドがライブラリーの内容を修正したかどうかに関係なく、無条件にライブラリー記号テーブルを再生成させます。 このフラグは、ライブラリーに対して strip コマンドを使用した後で、ライブラリー記号テーブルを復元するために使います。 |
| -t | ライブラリーの内容のテーブルを標準出力に書き出します。 ファイル名を指定した場合は、指定したファイルだけが表示されます。 ファイルを指定しなければ、-t フラグはライブラリー内のすべてのファイルを出力します。 |
| -T | アーカイブ・メンバー名が、ファイルシステムがサポートしている長さよりより長い場合に、ファイル名の切り捨てができるようにします。 ファイルシステムは、アーカイブ・メンバー名の最大長である 255 文字に等しい長さの名前をサポートしているので、このオプションは効力がありません。 |
| -u | 最後にコピーされた後で変更されたファイルだけをコピーします (上記の -r フラグの説明を参照)。 |
| -v | 新しいライブラリーの作成に関して、ファイル単位の詳細な記述を標準出力に書き出します。 このフラグを -t フラグと共に使うと、ls -l コマンドの場合と同様の長形式のリストが表示されます。 -x フラグと共に使用した場合は、各ファイルの前に名前が表示されます。 -h フラグと共に使用した場合は、メンバー名と更新された修正時刻が出力されます。 |
| -w | アーカイブ記号テーブルを表示します。 各記号は、記号が定義されているファイルの名前と共に出力されます。 |
| -x | 指定されたファイルを現行ディレクトリーにコピーすることにより、それらのファイルを抽出します。 これらのコピーは、ライブラリー内に残っているオリジナル・ファイルと同じ名前になります。 ファイルを 1 つも指定しなければ、-x フラグはライブラリー内のすべてのファイルをコピーします。 このプロセスによってライブラリーが変更されることはありません。 |
| -X (X) モード | ar によって検査するオブジェクト・ファイルのタイプを指定します。 mode は次のいずれかでなければなりません。
|
| -Z | アーカイブの一時コピーを作成し、要求されるすべての変更をコピーに対して実行します。 すべての操作が正常に完了したら、アーカイブの作業用コピーは、元のコピーの上にコピーされます。 このフラグは、-h フラグと一緒には使用できません。 |
| ArchiveFile | アーカイブ・ファイル名を指定します。これは必須です。 |
| MemberName ... | 個々のアーカイブ・メンバーの名前。 |
終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | 正常終了。 |
| >0 | エラーが発生しました。 |
例
- ライブラリーを作成するには、次のように入力します。
:NONE.lib.aライブラリーが存在しない場合、このコマンドはライブラリーを作成し、ファイルのコピーをそのライブラリーに入力します。strlen.oおよびstrcpy.o. がlib.aライブラリーが存在している場合には, このコマンドは重複したメンバーを検査せずに新しいメンバーを終わりに追加します。 v フラグは詳細モードを設定します。このモードでは、ar コマンドは進行中に進行状況レポートを表示します。ar -v -q lib.a strlen.o strcpy.o - ライブラリーの目次をリストするには、次のように入力します。
このコマンドは, システムの目次をリストします。lib.aライブラリを表示し、ls-lコマンドの出力に似た長いリストを表示する。 メンバー・ファイル名だけを出力するには、-v フラグを省略します。ar -v -t lib.a - ライブラリーに対して新しいメンバーを置換または追加するには、次のように入力します。
このコマンドは、メンバーを置き換えます。strlen.oおよびstrcat.o.lib.aは, 例 1 に示すように作成されています。strlen.oメンバーが置き換えられます。 次の名前のメンバーstrcat.oはまだ存在していないので, ライブラリーの終わりに追加されます。ar -v -r lib.a strlen.o strcat.o - 新規メンバーを挿入する場所を指定するには、次のように入力します。
このコマンドは以下を追加します。strcmp.oファイルの前に新しいメンバーを配置するstrlen.oメンバー。ar -v -r -b strlen.o lib.a strcmp.o - メンバーが変更された場合にそのメンバーを更新するには、次のように入力します。
このコマンドは, 既存のデータを置き換えます。strcpy.oメンバー、ただしファイルの場合のみstrcpy.oが最後にライブラリーに追加されてから変更されています。ar -v -r -u lib.a strcpy.o - ライブラリー・メンバーの順序を変更するには、次のように入力します。
このコマンドは、メンバーを移動します。strcat.oおよびstrcpy.o次の直後の位置にstrcmp.oメンバー。 以下の相対順序strcat.oおよびstrcpy.oメンバーは保持されます。 つまり、以下のようになります。strcpy.oメンバーの前にstrcat.o移動前のメンバーは移動しますが、それでも変わりません。ar -v -m -a strcmp.o lib.a strcat.o strcpy.o - ライブラリー・メンバーを抽出するには、次のように入力します。
このコマンドは、メンバーをコピーします。strcat.oおよびstrcpy.o名前付きの個々のファイルにstrcat.oおよびstrcpy.o、それぞれ。ar -v -x lib.a strcat.o strcpy.o - メンバーを抽出して名前変更するには、次のように入力します。
このコマンドは、メンバーをコピーします。strcpy.o名前の付いたファイルにstringcopy.o.ar -p lib.a strcpy.o >stringcopy.o - メンバーを削除するには、次のように入力します。
このコマンドは、メンバーを削除します。strlen.oを以下から取得します。lib.aライブラリー。ar -v -d lib.a strlen.o - LDコマンドを使用して作成された複数の共有モジュールからアーカイブ・ライブラリーを作成するには、次のように入力します。
このコマンドは, 次の名前のアーカイブ・ライブラリーを作成します。libshr.a指定された共有モジュールからshrsub.o,shrsub2.o,shrsub3.oなどがあります。 コンパイルしてリンクするには、main使用するプログラムlibshr.aアーカイブ・ライブラリーの場合は、次のコマンドを使用します。ar -r -v libshr.a shrsub.o shrsub2.o shrsub3.o ...
このmainプログラムは現在実行可能です。 以下によって参照されるすべてのシンボルmainに含まれているプログラムlibshr.aアーカイブ・ライブラリーに据え置き解決のマークが付けられました。 - フラグは、以下のことを指定します。libshr.aライブラリーでシンボルを検索します。cc -o main main.c -L/u/sharedlib -lshr - lib.a の内容を出力する (ただし 32 ビットのオブジェクト・ファイルは無視する) には、次のように入力します。
ar -X64 -t -v lib.a - lib.a から 32 ビットのオブジェクト・ファイルを抽出するには、次のように入力します。
ar -X32 -x lib.a - 32 ビット、64 ビット、さらに非オブジェクトも含めて、lib.a 内のすべてのファイルを出力するには、次のように入力します。
ar -X32_64 -t -v lib.a
ファイル
| 項目 | 説明 |
|---|---|
| /tmp/ar* | 一時ファイルが入っています。 |