ar(1)

名称
ar - アーカイブの作成、更新、および、アーカイブからの抽出

書式
ar [-] {dmpqrtx}[abcfilNoPsSuvV] [membername ] [count ] archive files ...

解説
GNU ar プログラムは、アーカイブの作成、更新、および、アーカイブからの抽出を 行ないます。 アーカイブ とは、オリジナルのファイル (アーカイブの メンバ と呼びます) を復元できるような構造で、他のファイル群の集合を保持する ような一つのファイルです。 元のファイルの内容、モード (パーミッション)、タイムスタンプ、所有者、 グループの情報はアーカイブ内でも保存され、ファイル抽出時には復元 されます。 GNU ar では、メンバファイルのファイル名の長さには制限はありませんが、システム の設定によっては (他のツールで管理されるアーカイブファイルの形式との 互換性のために) メンバファイルのファイル名の長さに制限がある場合があります。 制限がある場合は、多くの場合 15 文字 (a.out 関連のファイル形式が代表的) か、 16 文字 (coff 関連のファイル形式が代表的) に制限されます。 この種類のアーカイブは、共有のサブルーチンを保持するライブラリとして 利用されることが多いため、ar はバイナリユーティリティと考えられます。 `s ' 修飾子を指定した場合、ar はアーカイブ内のリロケータブルオブジェクトで定義されたシンボル のインデックスを作成します。 一度作成されたインデックスは、ar がアーカイブの内容を変更するときには必ず更新されます (ただし `q ' オプション指定時は更新されません)。このようなインデックスを持つ アーカイブを用いることによって、ライブラリのリンクが高速化されたり、 ライブラリ内のルーチンがアーカイブ内の配置にかかわらず、互いを呼び出す ことができるようになります。 `nm -s ' または `nm --print-armap ' によって、このインデックステーブルを表示することができます。 もし、アーカイブにインデックステーブルが含まれていない場合は、ranlib と呼ばれる、もう一つの形式の ar を用いてテーブルだけを追加することができます。 ar を実行する時は、少なくとも二つの引数を指定する必要があります。 オペレーション (動作) を指定する一つのキー文字と、処理するアーカイブ名です (キー文字には修飾子 として複数の文字をつけることもできます)。 ほとんどのオペレーションは、処理する個々のファイル名を指定するための files 引数を受け付けます。

オプション
GNU ar は最初のコマンドラインオプションとして、オペレーションコード p と、修飾子 mod を任意の順序で組み合わせたものを受け付けます。 最初のオプションの先頭にダッシュ(ハイフン)をつけることもできます。 キー文字 p は、どのオペレーションを実行するかを指定します。キー文字としては 以下のいずれか一つだけを指定することができます。

d   アーカイブからモジュールを削除 します。削除するモジュール名を files として指定して下さい。 ファイル名を指定しなければアーカイブは変更されません。 `v ' 修飾子を指定した時には、ar は削除する際にそのモジュール名を表示します。

m   メンバをアーカイブ内で移動します。 あるシンボルが複数のメンバで定義されている場合は、アーカイブ内でのメンバの 順序によって、プログラムがライブラリをリンクした結果が異なることが あります。 m に修飾子が指定されなかった場合は files 引数で指定したメンバはアーカイブの最後 に移動されます。 `a '、`b '、または `i ' 修飾子を指定することによって、修飾子に応じた場所に移動します。

p   アーカイブ内の指定されたメンバを標準出力に出力 します。`v ' 修飾子が指定されたときは、メンバの内容を出力する前にメンバ名を出力 します。 files を指定しなければ、アーカイブ内のすべてのファイルが出力されます。

q   クイックアペンド 。files で指定されたファイルを、重複をチェックせずにアーカイブ の末尾に追加します。 `a '、`b '、`i ' 修飾子はこのオペレーションには影響しません 。新たなメンバは常にアーカイブの末尾に置かれます。 `v ' 修飾子を指定すると、ar は追加の際にそのファイル名を出力します。 このオペレーションの特徴は動作速度ですので、たとえ シンボルテーブルのインデックスが存在したとしても、それを更新しません。 シンボルテーブルのインデックスを更新するには、明示的に `ar s ' か ranlib を使って下さい。 しかしながら、多くの異なるシステムにおいてクイックアペンドが インデックスを再構築することが仮定されていますので、GNU ar は `q ' は `r ' と同じ動作をするように実装しています。

r   filesをアーカイブに挿入 (重複の際は置換 ) します。 このオペレーションは`q ' とは異なり、追加するファイルと同名のメンバがすでに存在する 場合は削除されます。 もし files で指定したファイルの中に存在しないものが一つでも含まれている場合はar はエラーメッセージを出力し、そのファイル名と同名のメンバは変更 されずに保存されます。 デフォルトでは新しいメンバはファイルの末尾に追加されますが、`a '、`b '、または `i ' 修飾子を指定することにより、既存のメンバに対する相対的な位置関係を 指定することができます。 このオペレーションに `v ' 修飾子を指定すると、挿入された各ファイルに対して、ファイルが追加 された (削除された古いメンバがない) か、置換されたかを示す `a ' または `r ' のどちらかを含んだ一行が出力されます。

t   アーカイブ の内容、または files に列挙されたファイルのうち、アーカイブ内に存在するものの一覧を出力 します。通常はメンバ名だけを表示しますが、`v ' 修飾子を指定することにより、モード (パーミッション)、タイムスタンプ、 所有者、グループ、サイズも表示します。 files の指定がない場合はアーカイブ内のすべてのファイルの一覧を表示します。 あるアーカイブ (`b.a ' とします) の中に同じ名前 (`fie ' とします) の複数のファイルが存在する場合は、`ar t b.a fie ' は最初のファイルだけを表示します。同名のファイルをすべて見たい場合 はすべてのファイルの一覧を表示して下さい。この例では `ar t b.a ' です。

x   アーカイブから files で指定されたメンバを抽出 します。 `v ' 修飾子を指定すると、ar は抽出の際にそのファイル名を出力します。 files の指定がない場合はアーカイブ内のすべてのファイルを抽出します。

いくつかの修飾子 (mod ) をキー文字 p の直後に付けることによって、オペレーションの動作を変更する ことができます。

a   新しいファイルを既存のメンバの後 に追加します。 a 修飾子を用いるときは、archive 引数の前にmembername 引数として既存のメンバ名を指定する必要があります。

b   新しいファイルを既存のメンバの前 に追加します。 b 修飾子を用いるときは、archive 引数の前にmembername 引数として既存のメンバの名前を指定する必要があります。(`i 'と同じ。)

c   アーカイブを作成 します。 存在しないアーカイブ を更新するように指定した場合、そのアーカイブは必ず作成されますが、 その際、この修飾子を指定することによって、アーカイブを作成することを 明示していなければ、警告を出力します。

f   アーカイブ内の名前を切り詰めます。 通常 ar は任意の長さのファイル名を受け付けますが、このため、いくつかのシステム で使われている従来の ar と互換性のないアーカイブが作成されることになります。これが問題になる 場合は、 f 修飾子を指定して、ファイルをアーカイブに追加する際にそのファイル名を 切り詰めることができます。

i   新しいファイルを既存のメンバの前 に挿入します。 i 修飾子を用いる時は、archive 引数の前にmembername 引数として既存のメンバ名を指定する必要があります。(`b 'と同じ。)

l   この修飾子は指定可能ですが、使用されません。

N   count パラメータを使用します。 アーカイブに同一名のエントリが複数ある場合、これが使用されます。 指定した名前のインスタンス count を、アーカイブから抽出または削除します。

o   メンバを抽出する際にオリジナル の時刻を保存します。この修飾子を指定しないと、アーカイブから抽出 されたファイルのタイムスタンプは抽出時の時刻になります。

P   アーカイブ中の名前とマッチングを取るときに、フルパス名を使用します。 ar はフルパス名のアーカイブ (このようなアーカイブは POSIX 準拠ではありません) を作成できませんが、他のアーカイブ作成器は可能です。 このオプションを使用すると、 ar は完全なパス名を使用してファイル名のマッチングを行います。 他のツールで作成したアーカイブから 1 個のファイルを取り出す場合に有用でしょう。

s   アーカイブに他の変更がない場合でも、アーカイブにオブジェクトファイルの インデックスを書き込んだり、既存のインデックスを更新します。この修飾子 はほかのオペレーションと併用することも、単独で使用することも可能です。 あるアーカイブに対して`ar s ' を実行することは、そのアーカイブに対して `ranlib ' を実行することと等価です。

S   アーカイブのシンボルテーブルを作成しません。これを用いると大きな ライブラリを何回かに分けて作成する際に時間を短縮することができます。 この結果得られるアーカイブはリンカで使用することはできません。 シンボルテーブルを作成するためには最後に `ar ' を実行する時に `S ' 修飾子を外すか、そのアーカイブに対して `ranlib ' を実行する必要があります。

u   通常 ar r ... は列挙されたファイルをすべてアーカイブに挿入します。 この修飾子を指定すると、指定したファイルが既存の同名のメンバより 新しい場合のみ ファイルを挿入します。 `u ' 修飾子は `r '(置換) オペレーションだけに付けることができます。 特に、タイムスタンプの確認は `q ' オペレーションの利点である速度を低下させるので、`qu ' の組み合わせは認められません。

v   オペレーションに対して 冗長 な表示を要求します。 多くのオペレーションにおいて `v ' 修飾子が指定されると、 処理されたファイル名などの付加的な情報が表示されます。

V   この修飾子は ar のバージョン番号を表示します。

関連項目
infoの `binutils' の項; The GNU Binary Utilities, Roland H. Pesch (October 1991). nm(1) , ranlib(1) .

COPYING
Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation, Inc. This document is distributed under the terms of the GNU Free Documentation License, version 1.1. That license is described in the sources for this manual page, but it is not displayed here in order to make this manual more consise. Copies of this license can also be obtained from: http://www.gnu.org/copyleft/.