Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2022年7月27日
 
 

ar(1)

名前

ar - 移植可能なアーカイブまたはライブラリの保守

形式

/usr/bin/ar -d [-SvV] archive [file...]
/usr/bin/ar -m [-SvV] [-{a|b|i} posname] archive [file...]
/usr/bin/ar -p [-sSvV] archive [file...]
/usr/bin/ar -q [-cSvV] archive [file...]
/usr/bin/ar -r [-cuSvV] [-{a|b|i} posname] archive [file...]
/usr/bin/ar -s|-S [-vV] archive
/usr/bin/ar -t [-sSvV] archive [file...]
/usr/bin/ar -x [-CsSTvV] archive [file...]
/usr/xpg4/bin/ar -d [-SvV] archive [file...]
/usr/xpg4/bin/ar -m [-SvV] [-{a|b|i} posname] archive [file...]
/usr/xpg4/bin/ar -p [-sSvV] archive [file...]
/usr/xpg4/bin/ar -q [-cSvV] archive [file...]
/usr/xpg4/bin/ar -r [-cuSvV] [-{a|b|i} posname] archive [file...]
/usr/xpg4/bin/ar -s|-S [-vV] archive
/usr/xpg4/bin/ar -t [-sSvV] archive [file...]
/usr/xpg4/bin/ar -x [-CsSTvV] archive [file...]

説明

ar ユーティリティーは、1 つのアーカイブファイルとして結合されたファイル群の保守を実行します。このコマンドは、おもにライブラリファイルの 作成および更新のために使用されますが、他の似たような目的で使うこともできます。ar が使用するマジック文字列とファイルヘッダーは、印刷可能な ASCII 文字で構成されます。アーカイブが印刷可能なファイルの集まりであれば、アーカイブ全体も印刷可能です。

ar はアーカイブを作成する際に、すべてのマシン間で移植できるような形式でヘッダーを生成します。移植可能なアーカイブの形式や構造については、ar.h(3HEAD) で詳しく説明されています。アーカイブシンボルテーブル (ar.h(3HEAD) で説明) は、リンクエディタ ld(1) がオブジェクトファイルのライブラリ群にまたがった複数の受け渡しを効率よく有効にするために使用します。アーカイブシンボルテーブルは、アーカイブ中にオブジェクトファイルが 1 つでも 存在している場合にだけ、ar により作成または保守されます。アーカイブシンボルテーブルは、特殊な名前が付けられたファイル内にあり、そのファイルは常にアーカイブの先頭にあります。このファイルに関してはユーザーに対しては表示されず、ユーザーがアクセスすることはできません。ar を使ってアーカイブを生成または更新するたびに、シンボルテーブルは再構築されます。また後述する –s オプションを使えば、シンボルテーブルを強制的に再構築することができます。

オプション

サポートしているオプションは、次のとおりです。

–a posname

file が示す新しいファイルを archive 内の posname によって指定されたファイルのあとに配置します。

–b posname

file が示す新しいファイルを archive 内の posname によって指定されたファイルの前に配置します。

–c

デフォルトでは、archive で示すアーカイブが生成されるときに標準エラー出力に診断メッセージが書き込まれますが、このオプションはそのメッセージ出力を抑制します。

–C

抽出されたファイルが、ファイルシステム中の同一名のファイルを 置き換えないようにします。特に –T オプションも指定した場合にはファイル名の後半が切り捨てられてしまうので、この C オプションにより前半部分が一致するファイルを置き換えてしまうことを防げます。

–d

file が示すファイルを archive が示すアーカイブから削除します。

–i posname

file が示す新しいファイルを archive 内の posname によって指定されたファイルの前に配置します。これは –b オプションと同等です。

–m

file が示すファイルを移動します。–a–b、または –i が指定されている場合、–m オプションは file が示すファイルを新しい位置に移動します。そうでない場合は、archive が示すアーカイブの末尾に移動します。

–p

archive が示すアーカイブ中の、file が示すファイルの内容を標準出力に印刷します。file が 1 つも指定されていなければ、そのアーカイブ中のすべてのファイルの内容が、アーカイブ内でのファイルの順序に従って出力されます。

–q

file が示すファイルを、archive が示すアーカイブの最後尾に追加します。位置を指定するオプション –a–b、および –i はいずれも無効です。指定されたファイルと同じ名前のファイルがすでにそのアーカイブ中に存在しているかどうかは、チェックされません。このオプションを使えば二次的な動作を抑止できるので、大きなアーカイブを少しずつ作成していく場合に便利です。

–r

archive が示すアーカイブ中で、file が示すファイルの置換または追加を行います。指定したアーカイブが存在していなければ、新たにアーカイブを作成し (–c オプション指定時を除く) 診断メッセージを標準エラー出力に書き出します。ファイルの置換が発生しても、アーカイブ中でのファイルの順序は変わりません。この –r オプションとともに –u オプションも指定されていると、最終更新日時がアーカイブ中の対応するファイルより新しいファイルだけが置き換えられます。–a–b、または –i オプションを使用すると、新しいファイルが配置される位置を指定できます。それ以外の場合、新規ファイルはアーカイブの最後尾に置かれます。

–s

ar を呼び出したコマンドに、アーカイブの内容を更新するようなオプションが指定されていない場合でも、アーカイブのシンボルテーブルを強制的に再構築します。このコマンドは、アーカイブ上で strip(1) コマンドを実行したあとでアーカイブシンボルテーブルの内容を復元するのに便利です。

–S

アーカイブシンボルテーブルの作成時に、64 ビット対応のシンボルテーブル形式の使用を強制します。デフォルトでは、4G バイト未満のすべてのアーカイブに 32 ビット形式が使用されます。32 ビットの制限を超える、より大きなアーカイブにはより大きな形式が使用されます。

–t

アーカイブの内容を示す目次を生成します。file で指定したファイルが目次に含まれます。file を 1 つも指定しないと、アーカイブ中の全ファイル名が、アーカイブ中での順番に含まれます。

–T

抽出されたファイルのアーカイブ名の長さが、ファイルシステムでサポートする最大長を超えている場合、超過した部分を切り捨てます。デフォルトでは、最大長を超える長さの名前を持つファイルを抽出しようとするとエラーとなり、ファイルの抽出は行われず診断メッセージが出力されます。

–u

古いファイルを更新します。–r オプションと一緒に指定すると、最終更新日時が archive 中の対応するファイルよりも新しいファイルについてだけ、置換が行われます。

–v

詳細な情報を出力します。他のオプション –d–r、または –x も一緒に指定すると、アーカイブやファイルの生成と保守作業についてファイルごとの詳細な情報を出力します。–p オプションも一緒に指定すると、ファイルの内容の前にファイルの名前を標準出力に書き出します。–t オプションも一緒に指定すると、アーカイブ中のファイルに関する大量の情報が出力されます。–x オプションも一緒に指定すると、抽出作業の前にファイル名が出力されます。アーカイブに書き込むと、メッセージを標準エラーに書き出します。

–V
–-version

バージョン情報を出力します。

–x

file で指定したファイル群を archive が示すアーカイブから抽出します。アーカイブの内容は変わりません。file を 1 つも指定しないと、アーカイブ中の全ファイルが抽出されます。抽出されたファイルの名前が、出力先のディレクトリが サポートしている最大長を超えている場合、結果は定義されていません。抽出されたファイルの最終更新時間は、アーカイブから抽出された時間に設定されます。

–?
–-help

使用法に関するメッセージを出力したあと、すぐに終了します。

/usr/xpg4/bin/ar

次のオプションは、/usr/xpg4/bin/ar でサポートされています。

–v

アーカイブに書き込んだ場合 (メッセージを標準エラーに書き出しません) を除いて、/usr/bin/ar 版と同じです。

オペランド

次のオペランドがサポートされています。

archive

アーカイブのパス名。

file

パス名。アーカイブ中のファイル名と比較する際には、ファイル名の最終コンポーネントだけが使用されます。最終パス名コンポーネント (basename(1) を参照) に同一の名前が複数指定された場合、その結果は不確定です。アーカイブに追加または置換されたファイルの名前は、それが正当なものであれば、実装先システムのアーカイブの形式により切り捨てられることはありません。

環境変数

ar の実行に影響を与える次の環境変数についての詳細は、environ(7) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、LC_TIME、および NLSPATH。

TMPDIR

一時ファイルが存在する場合にデフォルトのディレクトリにオーバーライドするパス名を調べます。

TZ

ar –tv により書き込まれる日時文字列の計算に使用されるタイムゾーンを調べます。TZ が指定されていない、または NULL の場合は、デフォルトのタイムゾーンが使用されます。

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

>0

エラーが発生しました。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

/usr/bin/ar

属性タイプ
属性値
使用条件
system/linker
インタフェースの安定性
確実

/usr/xpg4/bin/ar

属性タイプ
属性値
使用条件
system/xopen/xcu4
インタフェースの安定性
確実
標準
standards(7) を参照してください。

関連項目

basename(1), cpio (1), elffile (1), file (1), ld(1) , lorder(1), strip (1), tar(1) , ar.h(3HEAD), a.out (5), attributes (7), environ (7), standards (7)

引数リスト中に同じファイル名を 2 度記述すると、アーカイブ中にそのファイルが 2 個置かれます。

慣習として、アーカイブのファイル名には .a という接尾辞を付けるのが一般的です。

従来の規則をサポートするために、最初のコマンド行オプションの「-」は省略できます。

ELF オブジェクトをアーカイブファイルに挿入する際、これらのオブジェクトを 8 バイトの境界に合わせるため、ar により文字 \n が追加される場合があります。こうしたパディングにより、ld(1) がアーカイブにアクセスする際の効率が向上します。この方法でパディングが行われるのは、ELF オブジェクトファイルだけです。その他のアーカイブメンバーは変更されません。この種のパディングが行われたオブジェクトをアーカイブから抽出するとき、生成される出力にパディングは含まれません。

ar を個別に呼び出して個々のファイルを既存のアーカイブに挿入するよりも、新しいアーカイブを最初から作成する方が時間を短縮できます。可能であれば、既存のアーカイブを削除し、ar を 1 回呼び出してアーカイブを再作成することをお勧めします。

1 つのアーカイブ全体のサイズは、4G バイトを超えてもかまいません。ただし、アーカイブ内の個別のファイルは、アーカイブファイルの形式により 4G バイト以内に制限されています。ar.h(3HEAD) を参照してください。

アーカイブ内の各ファイルのユーザー ID およびグループ ID の最大値は、アーカイブファイルの形式により 6 桁の 10 進数に制限されています。999999 を超えるユーザー ID やグループ ID は、自動的にユーザー ID nobody (60001) またはグループ ID nobody (6001) に設定されます。ar.h(3HEAD) を参照してください。