GNU arプログラムは 、アーカイブを作成 、変更、および抽出します。 アーカイブは、元の個々のファイル(アーカイブのメンバーと呼ばれます)を取得できる構造内の他のファイルのコレクションを保持する単一のファイルです。
概要
元のファイルの内容、モード(権限)、タイムスタンプ、所有者、グループはアーカイブに保存され、抽出時に復元できます。
GNUはメンバの名前の長さがすべてのアーカイブを維持できます。 ただし、システム上でarがどのように設定されているかによって、他のツールで管理されているアーカイブ形式との互換性のために、メンバー名の長さに制限が課されることがあります。 存在する場合、制限は15文字(a.outに関連する形式に特有)または16文字(通常、coffに関連する形式)です。
arはバイナリユーティリティと見なされます。なぜなら、この種のアーカイブは、よく使われるサブルーチンを保持するライブラリとして最もよく使われるからです。
arは、修飾子sを指定すると、アーカイブ内の再配置可能オブジェクトモジュールで定義されたシンボルへのインデックスを作成します。 作成されると、 arがその内容を変更するたびにアーカイブ内のこのインデックスが更新されます( q更新操作では保存されません)。 このようなインデックスを持つアーカイブは、ライブラリへのリンクを高速化し、ライブラリ内のルーチンがアーカイブ内の配置に関係なく互いに呼び出すことを可能にします。
このインデックステーブルを表示するには、 nm -sまたはnm -print-armapを使用します。 アーカイブにテーブルがない場合、 ranlibという別の形式のarを使用してテーブルだけを追加することができます。
GNU arは、2つの異なる機能と互換性があるように設計されています。 Unixシステム上のさまざまなarのようなコマンドラインオプションを使用して、その活動を制御することができます 。 単一のコマンドラインオプション-Mを指定すると、MRIの `librarian 'プログラムのように、標準入力を介して提供されるスクリプトで制御することができます。
シノプシス
ar [ -X32_64 ] [ - ] p [ mod [ relpos ] [ count ]] アーカイブ [ メンバ ...]
オプション
GNU arでは、最初のコマンドライン引数の中で、オペレーションコードpとモディファイアフラグmodを任意の順序で組み合わせることができます。
必要に応じて、最初のコマンドライン引数をダッシュで開始することができます。
p keyletterは実行する操作を指定します。 それは次のいずれかであるかもしれませんが、あなたはそれらのうちの1つだけを指定しなければなりません:
d
アーカイブからモジュールを削除します。 メンバとして削除するモジュールの名前を指定します。 削除するファイルが指定されていない場合は、アーカイブは変更されません。
v修飾子を指定すると、 arは削除されるごとに各モジュールをリストします。
m
この操作を使用して、アーカイブ内のメンバーを移動します。
1つのシンボルが複数のメンバで定義されている場合、アーカイブ内のメンバの順序は、ライブラリを使用してプログラムがどのようにリンクされるかを変えることができます。
"m"で修飾子を使用しない場合、 メンバ引数に指定したメンバはアーカイブの最後に移動されます。 a 、 b 、またはi修飾子を使用して、指定した場所に移動することができます。
p
指定されたアーカイブのメンバを標準出力ファイルに出力します。 v修飾子が指定されている場合は、内容を標準出力にコピーする前にメンバー名を表示してください。
メンバ引数を指定しないと、アーカイブ内のすべてのファイルが出力されます。
q
クイック追加 ; 歴史的には、ファイルメンバーをアーカイブの最後に追加します。置換のチェックは行いません。
修飾子a 、 b 、およびiはこの操作に影響しません。 新しいメンバーは常にアーカイブの最後に配置されます。
修飾子vは、各ファイルが追加されたときにarをリスト表示させます。
この操作のポイントは速度なので、アーカイブのシンボルテーブルインデックスは、既に存在していても更新されません。 ar sまたはranlibを明示的に使用してシンボルテーブルのインデックスを更新することができます。
しかし、あまりにも多くの異なるシステムでは、クイックアペンドがインデックスを再構築すると仮定しているため、GNU arは "q"を "r"の同義語として実装しています。
r
files メンバをアーカイブに挿入します( 置き換えます )。 この操作は、既存のメンバーが追加されたメンバーと一致する場合、既存のメンバーが削除されるという点でqと異なります。
member ...で指定されたファイルの1つが存在しない場合、 arはエラーメッセージを表示し、その名前と一致する既存のアーカイブメンバーをそのまま残します。
デフォルトでは、新しいメンバーはファイルの最後に追加されます。 既存のメンバーとの相対的な配置を要求するために、修飾子a 、 b 、またはiのいずれかを使用できます。
この操作で使用される修飾子vは、ファイルが追加された(古いメンバーが削除されていない)か置き換えられたかを示す文字aまたはr のいずれかとともに、挿入された各ファイルの出力行を引き出します。
t
アーカイブの内容、またはアーカイブに存在するmember ...にリストされているファイルの内容を一覧表示するテーブルを表示します 。 通常、メンバー名のみが表示されます。 モード(パーミッション)、タイムスタンプ、所有者、グループ、およびサイズも見たい場合は、 v修飾子も指定することで要求できます。
メンバーを指定しないと、アーカイブ内のすべてのファイルがリストされます。
アーカイブに同じ名前(例えば、 fie )を持つ複数のファイルがある場合(たとえばba )、 ar t ba fieは最初のインスタンスのみをリストします。 それらをすべて見るには、完全なリストを求めなければなりません---この例では、 ar t baです。
バツ
アーカイブからメンバー(名前付きメンバー )を抽出します。 この操作でv修飾子を使用すると、各名前を抽出する際にその名前をリストするよう要求できます。
メンバーを指定しないと、アーカイブ内のすべてのファイルが抽出されます。
いくつかの修飾子( mod )は、操作の振る舞いのバリエーションを指定するために、 pキー文字列の直後に続くことがあります:
a
アーカイブの既存メンバーの後に新しいファイルを追加します。 修飾子aを使用する場合は、 アーカイブ仕様の前に、既存のアーカイブ・メンバーの名前をrelpos引数として指定する必要があります。
b
アーカイブの既存メンバーの前に新しいファイルを追加します。 修飾子bを使用する場合、 アーカイブ仕様の前に、既存のアーカイブ・メンバーの名前をrelpos引数として指定する必要があります。 ( 私と同じ)。
c
アーカイブを作成します。 指定されたアーカイブは、更新を要求したときに、存在しない場合は常に作成されます。 しかし、この修飾子を使用して、作成することを前もって指定しない限り、警告が出されます。
f
アーカイブ内の名前を切り捨てます。 GNU arは通常、任意の長さのファイル名を許可します。 これにより、一部のシステムではネイティブのarプログラムと互換性のないアーカイブが作成されます。 これが問題であれば、ファイル名をアーカイブに入れる際にf修飾子を使用してファイル名を切り捨てることができます。
私
アーカイブの既存メンバーの前に新しいファイルを挿入します。 修飾子iを使用する場合、 アーカイブ仕様の前に、既存のアーカイブ・メンバーの名前がrelpos引数として存在する必要があります。 ( bと同じ)。
l
この修飾子は受け入れられますが使用されません。
N
countパラメータを使用します。 同じ名前のアーカイブに複数のエントリがある場合に使用されます。 指定された名前のインスタンスカウントをアーカイブから抽出または削除します。
o
メンバーの元の日付を抽出するときはその日付を保存します。 この修飾子を指定しないと、アーカイブから抽出されたファイルに抽出時刻がスタンプされます。
P
アーカイブ内の名前を照合するときは、絶対パス名を使用します。 GNU arは完全なパス名を持つアーカイブを作成することはできません(アーカイブはPOSIXの苦情ではありません)が、他のアーカイブ作成者が行うことができます。 このオプションを指定すると、完全なパス名を使用してファイル名を一致させることができます。これは、別のツールで作成されたアーカイブから単一のファイルを抽出するときに便利です。
s
アーカイブにオブジェクトファイルインデックスを書き込むか、アーカイブに他の変更が加えられていない場合でも、既存のものを更新します。 この修飾子フラグは、任意の操作で使用することも、単独で使用することもできます。 アーカイブ上でのarsの実行は、それに対してranlibを実行することと同じです。
S
アーカイブシンボルテーブルを生成しないでください。 これにより、いくつかの手順で大きなライブラリを構築する速度を向上させることができます。 結果のアーカイブはリンカーで使用することはできません。 シンボルテーブルを作成するには、 arの最後の実行時にS修飾子を省略するか、アーカイブに対してranlibを実行する必要があります。
あなた
通常、 ar r ...はすべてのファイルをアーカイブに挿入します。 同じ名前の既存のメンバーよりも新しいリストのファイルのみを挿入する場合は、この修飾子を使用します。 u修飾子は、操作r (replace)に対してのみ許可されます。 特に、タイムスタンプをチェックすると操作qの速度上の利点が失われるため、組み合わせは許可されません。
v
この修飾子は、 冗長バージョンの操作を要求します。 多くの操作では、修飾子vが追加されたときに処理されるファイル名などの追加情報が表示されます。
V
この修飾子は、 arのバージョン番号を示します。
arは、AIXとの互換性のために、 -X32_64という綴りの初期オプションを無視します。 このオプションによって生成される動作は、GNU arのデフォルトです。 arは他の-Xオプションをサポートしていません。 特に、AIX arのデフォルトである-X32をサポートしていません。
重要: manコマンド( %man )を使用して、特定のコンピュータでコマンドがどのように使用されているかを確認してください。