スポンサーリンク

AR

名称
書式
解説
オプション
関連項目
COPYRIGHT

名称

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

書式

ar [−X32_64] []p[mod [relpos] [count]] archive [member...]

解説

GNU ar プログラムは、アーカイブの作成、更新、および、アーカイブからの抽 出を行ないます。アーカイブとは、オリジナルのファイル (アーカイブのメ ン バ と呼びます) を復元できるような構造で、他のファイル群の集合を保持する ような一つのファイルです。

元のファイルの内容、モード (パーミッション)、タイムスタンプ、所有者、グ ルー プ の 情報はアーカイブ内でも保存され、ファイル抽出時には復元されま す。

GNU ar では、メンバファイルのファイル名の長さには制限はありませんが、シ ス テムの設定によっては (他のツールで管理されるアーカイブファイルの形式 との互換性のために) メンバファイルのファイル名の長さに制限がある場合 が あ ります。制限がある場合は、多くの場合 15 文字 (a.out 関連のファイル形 式が代表的) か、 16 文字 (coff 関連のファイル形式が代表的) に制限されま す。

こ の種類のアーカイブは、共有のサブルーチンを保持するライブラリとして利 用されることが多いため、 ar はバイナリユーティリティと考えられます。

s 修飾子を指定した場合、 ar はアーカイブ内のリロケータブルオブジェク ト で 定義されたシンボルのインデックスを作成します。一度作成されたインデッ クスは、 ar がアーカイブの内容を変更するときには必ず更新されます (た だ し q オプション指定時は更新されません)。このようなインデックスを持つ アーカイブを用いることによって、ライブラリのリンクが高速化されたり、 ラ イ ブラリ内のルーチンがアーカイブ内の配置にかかわらず、互いを呼び出すこ とができるようになります。

nm −s または nm −−print−armap によって、このインデックステーブルを表 示 す ることができます。もし、アーカイブにインデックステーブルが含まれてい ない場合は、 ranlib と呼ばれる、もう一つの形式の ar を用いてテーブル だ けを追加することができます。

GNU ar は、別の 2 種類の機構と互換であるようにデザインされています。 Unix システムの ar のようにコマンド行オプションで動作を制御できますし、 単一のコマンド行オプション −M を指定することで、 MRI ‘‘librarian’’ プロ グラムのような標準入力から提供されるスクリプトでも制御できます。

オプション

GNU ar は最初のコマンド行オプションとして、オペレーションコード p と、 修飾子 mod を任意の順序で組み合わせたものを受け付けます。

最初のオプションの先頭にダッシュ(ハイフン)をつけることもできます。

キー文字 p は、どのオペレーションを実行するかを指定します。キー文字とし ては以下のいずれか一つだけを指定することができます。

d

アーカイブからモジュールを削除します。削除するモジュー ル 名 を member... として指定して下さい。ファイル名を指定しなければアーカ イブは変更されません。

v 修飾子を指定した時には、 ar は削除する際にそのモジュール名を表示 します。

m

メンバをアーカイブ内で移動します。

あるシンボルが複数のメンバで定義されている場合は、アーカイブ内での メンバの順序によって、プログラムがライブラリをリンクした結果が異な ることがあります。

"m" に修飾子が指定されなかった場合は member 引数で指定したメンバは アーカイブの最後に移動されます。 a, b, i 修飾子を指定する こ と に よって、修飾子に応じた場所に移動します。

p

アーカイブ内の指定されたメンバを標準出力に出力します。 v 修飾子 が指定されたときは、メンバの内容を出力する前にメンバ名を出力 し ま す。

member 引数を指定しなければ、アーカイブ内のすべてのファイルが出力 されます。

q

クイックアペンド。歴史的には、member で指定されたファイルを、重 複をチェックせずに アーカイブ の末尾に追加します。

a, b, i 修飾子はこのオペレーションには 影響しません。新たなメンバ は常にアーカイブの末尾に置かれます。

v 修飾子を指定すると、 ar は追加の際にそのファイル名を出力します。

このオペレーションの特徴は動作速度ですので、たとえシンボルテーブル のインデックスが存在したとしても、それを更新しません。シンボルテー ブルのインデックスを更新するには、明示的に ar sranlib を使って 下さい。

しかしながら、多くの異なるシステムにおいてクイックアペンドが イ ン デッ クスを再構築することが仮定されていますので、 GNU ar は qr と同じ動作をするように実装しています。

r

ファイル member... をアーカイブに挿入 (重複の際は置換) し ま す。 このオペレーションは q とは異なり、追加するファイルと同名のメ ンバがすでに存在する場合は削除されます。

もし member... で指定したファイルの中に存在しないものが一つでも含 まれている場合は ar はエラーメッセージを出力し、そのファイル名と同 名のメンバは変更されずに保存されます。

デフォルトでは新しいメンバはファイルの末尾に追加されますが、 a, b, i 修飾子を指定することにより、既存のメンバに対する相対的な位置関係 を指定することができます。

このオペレーションに v 修飾子を指定すると、挿入された各ファイル に 対して、ファイルが追加された (削除された古いメンバがない) か、置換 されたかを示す a または r のどちらかを含んだ一行が出力されます。

t

アーカイブの内容、または member... に列挙されたファイ ル の う ち、アーカイブ内に存在するものの一覧を出力します。通常はメンバ名だ けを表示しますが、 v 修飾子を指定することにより、モード (パー ミッ ション)、タイムスタンプ、所有者、グループ、サイズも表示します。

member の指定がない場合はアーカイブ内のすべてのファイルの一覧を表 示します。

あるアーカイブ ( b.a とします) の中に同じ名前 ( fie とします) の複 数のファイルが存在する場合は、 ar t b.a fie は最初のファイルだけを 表示します。同名のファイルをすべて見たい場合はすべてのファイルの一 覧を表示して下さい。この例では ar t b.a です。

x

アーカイブから files で指定されたメンバを抽出します。 v 修飾子 を指定すると、 ar は抽出の際にそのファイル名を出力します。

member の指定がない場合はアーカイブ内のすべてのファイルを抽出し ま す。

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

a

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

b

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

c

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

f

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

i

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

l

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

N

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

o

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

P

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

s

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

S

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

u

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

v

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

V

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

ar は、最初のオプションが −X32_64 の場合これを無視します。 AIX との互換 性 のためです。本オプション指定時の動作が GNU ar デフォルトです。 ar は 他のいかなる −X もサポートしません。特に AIX ar のデフォルトである −X32 はサポートしません。

関連項目

nm(1), ranlib(1), Info の binutils の項。

COPYRIGHT

Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ‘‘ GNU Free Documentation License’’.

スポンサーリンク