EN JA
AR(1)
AR(1) FreeBSD General Commands Manual AR(1)

名称

ar, ranlibアーカイブを管理する

書式

ar -d [ -T][ -f][ -j][ -v][ -z] archive file ...

ar -m [ -T][ -a position-after][ -b position-before][ -f][ -i position-before][ -j][ -s | -S][ -z] archive file ...

ar -p [ -T][ -f][ -v] archive [ file ...]

ar -q [ -T][ -c][ -D][ -f][ -s | -S][ -v][ -z] archive file ...

ar -r [ -T][ -a position-after][ -b position-before][ -c][ -D][ -f][ -i position-before][ -j][ -s | -S][ -u][ -v][ -z] archive file ...

ar -s [ -j][ -z] archive

ar -t [ -f][ -T][ -v] archive [ file ...]

ar -x [ -C][ -T][ -f][ -o][ -u][ -v] archive [ file ...]

ar -M

ranlib [ -D] archive ...

解説

ar ユーティリティは、アーカイブへ結合されたファイルのグループを作成して、維持します。いったんアーカイブが作成されると、新しいファイルをそれに追加することができ、既存のファイルを抽出する、削除するか、または置き換えることができます。

ファイルは、それらの最後のファイル名のコンポーネントによってアーカイブで名前が付けられるので、“/”を含むパスによって参照されるファイルがアーカイブされるなら、それはパスの最後のコンポーネントによって名前が付けられます。同様に、アーカイブに格納されたファイル名に対してコマンドラインでリストされたパスにマッチするとき、パスの最後のコンポーネントだけが比較されます。

ar の通常の使用は、リンクエディタ ld(1) での使用に適したライブラリの作成とメンテナンスのためのものですが、この目的に制限されません。 ar ユーティリティは、リンクエディタ操作を早くするために使用される、アーカイブシンボルテーブル ( ar(5) 参照) を作成して、管理できます。シンボルテーブルがアーカイブに存在しているなら、アーカイブでそれに続く操作によって最新に保たれます。

ranlib ユーティリティは、アーカイブシンボルテーブルを既存のアーカイブに追加するために使用されます。

オプション

ar ユーティリティは、次のオプションをサポートします:
-a member-after
オプション -m と共に使用されるとき、このオプションは、引数 file ... によって指定されたアーカイブメンバが、引数 member-after によって指定されたアーカイブメンバの後ろに移動されることを指定します。オプション -r と共に使用されるとき、このオプションは、引数 file ... によって指定されたファイルが、引数 member-after によって指定されたアーカイブメンバの後ろに追加されることを指定します。
-b member-before
オプション -m と共に使用されるとき、このオプションは、引数 file ... によって指定されたアーカイブメンバが、引数 member-before によって指定されたアーカイブメンバの前に移動されることを指定します。オプション -r と共に使用されるとき、このオプションは、引数 file ... によって指定されたファイルが、引数 member-before によって指定されたアーカイブメンバの前に追加されることを指定します。
-c
新しいアーカイブが、 -r-q オプションを使用して作成されるとき、印刷される情報メッセージを抑制します。
-C
抽出されたファイルがファイルシステムの like-named ファイルと置き換えるのを防ぎます。
-d
引数 archive によって指定されたアーカイブから引数 file ... によって指定されたメンバを削除します。アーカイブのシンボルテーブルは、存在しているなら、アーカイブの新しい内容を反映するために更新されます。
-D
-r または -q オプションと組み合わせて使用されるとき、実際の mtime の代わりに 0 を、uid と gid 値と 0644 の代わりに引数 file ... によって指定されたメンバのファイルモードを挿入します。これは、メンバの内容が同じであるとき、結果のアーカイブのチェックサムが再現可能となることを保証します。
-f
オプション -T と同じ意味です。
-i member-before
オプション -b と同じ意味です。
-j
このオプションは、受け付けられますが、無視します。
-l
このオプションは、GNU ar(1) との互換性のために受け付けられますが、無視されます。
-m
アーカイブの中の引数 file ... によって指定されたアーカイブメンバを移動します。位置が、 -a, -b または -i オプションの 1 つで指定されたなら、メンバは、指定された位置の前か、または後ろに移動されます。位置が指定されていないなら、指定されたメンバは、アーカイブの終わりまで移動されます。アーカイブにシンボルテーブルがあるなら、アーカイブの新しい内容を反映するためにそれを更新します。
-M
標準入力から MRI ライブラリアンコマンドを読み込んで、実行します。 ar ユーティリティによって理解されるコマンドは、セクション MRI ライブラリアンコマンド MRI Librarian Commands で説明されます。
-o
それらを抽出するときに、メンバのオリジナルの変更時刻を保存します。
-p
引数 file ... によって指定された指定されたアーカイブメンバの内容を標準出力に書き込みます。メンバが指定されなかったなら、アーカイブのすべてのファイルの内容が、それらがアーカイブで見つかる順序で書き込まれます。
-q
引数 file ... によって指定されたファイルを引数 archive によって指定されたアーカイブにファイルがアーカイブに既に存在するかどうかチェックすることなしでファイルを追加します。アーカイブのシンボルテーブルは、必要に応じて更新されます。引数 archive によって指定されたファイルが、まだ存在していないなら、新しいアーカイブが作成されます。
-r
引数 file ... によって指定されたファイルを、必要であるなら、アーカイブを作成して、引数 archive によって指定されたアーカイブと置き換えるか、追加します。既存のメンバの置き換えは、アーカイブ中のメンバの順序を変更しません。引数 file ... で指定されたファイルが存在していないなら、名前にマッチしているアーカイブ中の既存のメンバは、変更されません。新しいファイルは、位置決めオプション -a, -b または -i が指定されないなら、アーカイブの終わりに追加されます。アーカイブシンボルテーブルが、存在しているなら、アーカイブの新しい状態を反映するために更新されます。
-s
アーカイブシンボルテーブル ( ar(5) 参照) を、引数 archive によって指定されたアーカイブに追加します。 -s オプション単独で ar を呼び出すことは、 ranlib を呼び出すことに同等です。
-S
アーカイブのシンボルテーブルを生成しません。
-t
それらがアーカイブに現れる順序で引数 file ... によって指定されたファイルを 1 行毎にリストします。ファイルが指定されないなら、アーカイブのすべてのファイルがリストされます。
-T
アーカイブメンバの名前付けのときに、アーカイブメンバ名またはコマンドラインファイル名引数の最初の 15 文字のみを使用します。
-u
条件付きで、アーカイブを更新するか、またはメンバを抽出します。 -r オプションと共に使用するとき、引数 file ... によって指定されたファイルは、それらがアーカイブされたバージョンより新しいなら、アーカイブで置き換えられます。 -x オプションと共に使用されるとき、引数 file ... によって指定されたメンバは、ファイルシステムでそれらが対応するファイルより新しい場合にだけ、抽出されます。
-v
冗長な出力を提供します。 -d, -m, -q または -x オプションと共に使用されるとき、 ar は、次の 3 つの空白で分離されたフィールドから成る、実行されるアーカイブの変更のファイルごとの記述を与えます: オプション文字、ダッシュ“-”とファイル名。 -r オプションと共に使用されるとき、 ar は、上記の説明を表示しますが、最初の文字は、ファイルがアーカイブに追加されるなら“a”、またはファイルがアーカイブに既にあるファイルと置き換えるなら“r”です。 -p オプションと共に使用されるとき、“<”と“>”文字で囲まれたファイルの名前は、単一の改行文字によって先行され、2 つの改行文字によって続けられて標準出力に書き込まれます。指定されたファイルの内容は、ファイル名に従います。 -t オプションと共に使用されるとき、 ar は、8 つの空白で分離された次のフィールドを表示します: strmode(3) によって表示されるファイルのパーミッション、 (“/”)によって分離された 10 進数のユーザとグループ ID、バイト単位のファイルサイズ、 strftime(3) 形式“%b %e %H:%M %Y”のファイル更新時刻とファイルの名前。
-V
バージョンの文字列を印刷して、終了します。
-x
引数 file ... よって指定されたアーカイブメンバをカレントディレクトリに抽出します。メンバが指定されていないなら、アーカイブのすべてのメンバを抽出します。抽出されたメンバに対応するファイルが存在していないなら、それは作成されます。抽出されたメンバに対応するファイルが存在しているなら、内容が上書きされ、パーミッションは、アーカイブに入れられたものに設定されますが、その所有者とグループは変更されません。ファイルのアクセスと更新時刻は、 -o オプションが指定されないなら、抽出された時刻となります。
-z
このオプションは、受け付けられますが、無視します。

MRI ライブラリアンコマンド

-M オプションが指定されるなら、 ar ユーティリティは、標準入力からコマンドを読み込んで、実行します。標準入力が端末であるなら、 ar ユーティリティは、行を読み込む前に、プロンプト“ AR >”を表示し、たとえエラーに遭遇したとしても、操作を継続します。標準入力が端末でないなら、 ar ユーティリティは、プロンプトを表示せずに、エラーに遭遇すると、実行を終了します。

各入力行は、単一のコマンドを含みます。入力行の単語は、空白文字で区切られます。行の最初の単語は、コマンドで、残りの単語は、コマンドへの引数です。コマンドの単語は、いずれにしても指定されます。引数は、コンマまたは空白で区切られます。

空行は、許可され、無視されます。長い行は、“ +”文字でそれらを終了することによって継続されます。

*”と“ ;”文字は、コメントを開始します。コメントは、行の終わりまでです。

MRI ライブラリアンのスクリプトを実行するとき、 ar ユーティリティは、アーカイブの一時的なコピーで動作します。コピーへの変更は、 save コマンドを使用して永続的にされます。

ar ユーティリティによって理解されるコマンドは、次の通りです:

addlib archive | addlib archive ( member [ , member]...)
引数 archive によって指定されたアーカイブの内容を現在のアーカイブに追加します。特定のメンバが引数 member を使用して指定されるなら、それらのメンバは、現在のアーカイブに追加されます。メンバが指定されないなら、アーカイブの全体の内容が現在のアーカイブに追加されます。
addmod member [ , member]...
引数 member によって指定されたファイルを現在のアーカイブに追加します。
clear
現在のアーカイブのすべての内容を破棄します。
create archive
引数 archive によって指定された新しいアーカイブを作成して、それを現在のアーカイブにします。指定されたアーカイブが既に存在しているなら、それは、 save コマンドが発行されるとき、上書きされます。
delete module [ , member]...
引数 member によって指定されたモジュールを現在のアーカイブから削除します。
directory archive ( member [ , member]...) [ outputfile]
アーカイブ中のそれぞれ指定されたモジュールをリストします。出力の形式は、 verbose コマンドを使用して設定された冗長さ設定に依存します。出力は、標準出力、または、引数 outputfile によって指定されたファイルに送られます。
end
ar ユーティリティを成功して終了します。現在のアーカイブに保存されなかった変更は、破棄されます。
extract member [ , member]...
引数 member によって指定されたメンバを現在のアーカイブから抽出します。
list
冗長なスタイルで現在のアーカイブの内容を表示します。
open archive
引数 archive によって指定されたアーカイブをオープンして、それを現在のアーカイブにします。
replace member [ , member]...
現在のアーカイブの指定されたメンバを引数 member によって指定されたファイルに置き換えます。ファイルは、カレントディレクトリに存在していなければなりません、そして、指定されたモジュールは、現在のアーカイブにまだ存在していなければなりません。
save
現在のアーカイブへすべての変更をコミットします。
verbose
directory コマンドの冗長さを切り換えます。

使用例

3 ファイル ex1.o, ex2.oex3.o を含んでいる新しいアーカイブ ex.a を作成するためには、次を使用します;
ar -rc ex.a ex1.o ex2.o ex3.o

既存のアーカイブ ex.a にアーカイブシンボルを追加するためには、次を使用します:

ar -s ex.a

アーカイブ ex.a からファイル ex1.o を削除するためには、次を使用します:

ar -d ex.a ex1.o

アーカイブ ex.a の内容を冗長にリストするためには、次を使用します:

ar -tv ex.a

MRI ライブラリアンコマンドを使用して、ファイル ex1.oex2.o を含む新しいアーカイブ ex.a を作成するためには、次のスクリプトを使用します:

create ex.a   * 出力アーカイブを指定する 
addmod ex1.o ex2.o  * モジュールを追加する 
save    * 保留中 (pending) の変更を保存する 
end    * ユーティリティを終了する

診断

The ar utility exits 0 on success, and >0 if an error occurs.

規格の準拠

ar ユーティリティの -a, -b, -c, -i, -m, -p, -q, -r, -s, -t, -u, -v, -C-T オプションのサポートは、 IEEE Std 1003.2 (“POSIX.2”) に準拠していると信じられています。

歴史

ar コマンドは、AT&T UNIX バージョン 1 ではじめて登場しました。 FreeBSD 8.0 で、 Kai Wang <kaiw@FreeBSD.org>は、 Streaming Archive Library (libarchive, -larchive)ELF Access Library (libelf, -lelf) を使用して arranlib を再実装しました。
December 22, 2011 FreeBSD